From 6d1317028ab02d62ea1c91b2bdb754bda8a2be8e Mon Sep 17 00:00:00 2001 From: mickie Date: Thu, 7 Jan 2021 19:54:44 -0600 Subject: [PATCH] initial commit --- LICENSE | 674 --------- README.md | 78 -- css/{sharer.css => style.css} | 72 +- gulpfile.js | 53 - html/index.html | 90 ++ html/options.html | 72 + img/captura.png | Bin 51571 -> 0 bytes img/{helado.png => ice-cream.png} | Bin img/icon-16-dark.png | Bin 0 -> 929 bytes img/{icon.png => icon-32-dark.png} | Bin index.html | 122 -- js/apiRequest.js | 48 - js/background.js | 17 + js/index.js | 374 ++--- js/jquery.js | 2 - js/options.js | 206 ++- jsconfig.json | 8 + manifest.json | 98 +- options.html | 117 -- package-lock.json | 2035 +--------------------------- package.json | 31 +- 21 files changed, 543 insertions(+), 3554 deletions(-) delete mode 100644 LICENSE delete mode 100644 README.md rename css/{sharer.css => style.css} (75%) delete mode 100644 gulpfile.js create mode 100644 html/index.html create mode 100644 html/options.html delete mode 100644 img/captura.png rename img/{helado.png => ice-cream.png} (100%) create mode 100644 img/icon-16-dark.png rename img/{icon.png => icon-32-dark.png} (100%) delete mode 100644 index.html delete mode 100644 js/apiRequest.js create mode 100644 js/background.js delete mode 100644 js/jquery.js create mode 100644 jsconfig.json delete mode 100644 options.html diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 9cecc1d..0000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/README.md b/README.md deleted file mode 100644 index 446d872..0000000 --- a/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# ![](/img/icon64.png) Share freedom - Firefox addon - -Share the current tab on the fediverse. - -[Get the extension](https://addons.mozilla.org/en-US/firefox/addon/share-freedom/) (require Firefox 57+) - -## Features - -Simplest add-on for the fediverse. Share web pages right from the toolbar button. - -Supported services/protocols: -- Gnusocial -- Mastodon / Misskey -- Hubzilla -- Diaspora -- Friendica -- Socialhome -- Lemmy -- Pleroma -- Osada / Zap / Zot6 -- XMPP -- Nextcloud - -## Screenshot - -![](/img/captura.png) - -## Notes - -- This add-on is a fork of [URL-sharer](https://github.com/shivarajnaidu/URL-sharer) (for centralized/privative social -networks) by shivarajnaidu. - -## Build - -Run on project root directory - -```bash -npm install -gulp -``` - -## Hint to settings - -In order to work properly, this addon requires that you specify the nodes (=servers) on which you are registered. This is due to the federation of the networks. You can do it on the settings page of the addon, found at **about:addons** in your firefox browser. - -## Contributing - -You can contribute in the following ways: - -- Finding and reporting bugs -- Contributing code to the project by fixing bugs or implementing features - -### Bug reports - -Bug reports and feature suggestions can be submitted to [Gitlab Issues](https://gitlab.com/mickie1/share-freedom-extension/issues). Please make sure that you are not submitting duplicates, and that a similar report or request has not already been resolved or rejected in the past using the search function. Please also use descriptive, concise titles. - -### Pull requests - -Please use clean, concise titles for your pull requests. - -## Invite an ice cream - -You can collaborate with some __criptocurrencies__ for the project :) - -__faircoins:__ fVXruVLErxawnKAchcfbMQXya8YYYPvaZN - -__Bitcoins:__ 15Y9cBeGhGmVGZxFQvQCsQhcCvxgzvKmcR - -![](/img/helado.png) -[CC-BY 4.0 by Vincent Le Moign](https://commons.wikimedia.org/wiki/File:552-soft-ice-cream-2.svg) - -## License - -This Program is Licensed under GPL v3 - -Copyleft (ɔ) 2019 - Miguel (mickie) - -See LICENSE file for more information. diff --git a/css/sharer.css b/css/style.css similarity index 75% rename from css/sharer.css rename to css/style.css index c8cb6e0..2b46af3 100644 --- a/css/sharer.css +++ b/css/style.css @@ -1,19 +1,23 @@ +/*by Kim*/ + /* Button Style 1 (Left Icons) */ html, body { - width:540px; + width: auto; height: auto; } + .btns-container{ height:auto; - background:#f5f5f5; - float:left; + width: auto; + float:right; + padding: 5px 5px 5px 1px; } .btns-container a{ - float:left; - margin:10px; + float:right; + margin:2px; } .btns-container a:hover{ @@ -166,3 +170,61 @@ a.btn-grey, a.btn-grey:hover{ justify-content:center; align-items:center; } + +.flex { + float: relative; + display: flex; + flex-direction: row; +} + +.options-container { + display: flex; + flex: initial; + flex-direction: row; + float: left; + cursor: pointer; + color: #7d7d7d; +} + +.btn-options { + font-size: 30px; + display: flex; + justify-content: center; + align-items: center; +} + +label { + display: block; + color: #ffffff; + padding: 3px; + margin: 5px; +} + +button { + margin: 15px; + padding: 3px; + border: none; + border-radius: 5px; + width: 190px; + height: 35px; + text-align: center; + background-color: #3455b8; + color: #ffffff; + font-size: 19px; +} + +button:hover { + background-color: #3a5fcd; +} + +button:active { + background-color: #22397b; +} + +h2 { + color: #ffffff; +} + +.credits { + color: #ffffff; +} diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 8f403dd..0000000 --- a/gulpfile.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; -const gulp = require('gulp'); -const concat = require('gulp-concat'); -const cleanCSS = require('gulp-clean-css'); -const htmlReplace = require('gulp-html-replace'); -const htmlmin = require('gulp-htmlmin'); -const uglify = require('gulp-uglify-es').default; -const rename = require('gulp-rename'); - -gulp.task('scripts', () => { - return gulp.src('js/*.js') - .pipe(concat('app.js')) - .pipe(uglify()) - .pipe(rename('app.min.js')) - .pipe(gulp.dest('build/js')); -}); - -gulp.task('styles', () => { - return gulp.src('css/*.css') - .pipe(concat('app.css')) - .pipe(cleanCSS()) - .pipe(rename('app.min.css')) - .pipe(gulp.dest('build/css/')) -}); - -gulp.task('html', () => { - return gulp.src('index.html') - .pipe(htmlmin({ collapseWhitespace: true })) - .pipe(htmlReplace({ - 'styles': 'css/app.min.css', - 'scripts': 'js/app.min.js' - })) - .pipe(gulp.dest('build')) -}); - -gulp.task('fonts', () => { - return gulp.src('fonts/*') - .pipe(gulp.dest('build/fonts')) -}); - -gulp.task('icons', () => { - return gulp.src('icons/*') - .pipe(gulp.dest('build/icons')) -}); - -gulp.task('manifest', () => { - return gulp.src('./manifest.json') - .pipe(gulp.dest('build')) -}); - -gulp.task('copy', ['fonts', 'icons', 'manifest']); - -gulp.task('default', ['scripts', 'styles', 'html', 'copy']); diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..602b722 --- /dev/null +++ b/html/index.html @@ -0,0 +1,90 @@ + + + + + + Share freedom + + + + + + + + + + + diff --git a/html/options.html b/html/options.html new file mode 100644 index 0000000..2a702d2 --- /dev/null +++ b/html/options.html @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + +
+
+

Settings

+
Wallpaper by: + Yarmo +
+
+
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ +
+ + + + + diff --git a/img/captura.png b/img/captura.png deleted file mode 100644 index 1c90ad30699576a6595af553ac88439d33fcd389..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51571 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 z 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 X2#T8*=cz#~00000NkvXXu0mjfnY>26 diff --git a/img/helado.png b/img/ice-cream.png similarity index 100% rename from img/helado.png rename to img/ice-cream.png diff --git a/img/icon-16-dark.png b/img/icon-16-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..eb2e7ca3502cc25a6ec1f97c2d2a78de909cff5c GIT binary patch literal 929 zcmV;S177@zP)V#C4whKDk4LHf7o7IK)<1b`}7AwYR~rk^X&b8p7-{C z-ik-cy*uDWNs}mQ6?lAJo6?2hz|d4zQt98^+FuiV5U(C0w+22Ek$p-n%&WXMzT5Ex z0Ck^U=300Lf%cHCY8US+9Y9+m@A01id1sOAE49AVexmU0 zKF^_3Bf5yl;O%>IDKstH4iAXC)i2loj>$`(Uy*@Z_hjp#ei@sJ%ci!A;%@aX^zOb& zO{LVUmBm>Kz?yEPAjeEgZ9Z);lrWdjNi%Asbm9E)G%cM$I^QU#%4?%!Svq3SUQ@-b z{@+Sn8Bcw4Wm4oY6P-)4 zGS@;rW^yu(OvaKIlcJg)4%6%BO+{Jp!y0PaqX{j`weVj33eMe#vj4>B_erFA^nh>n ze`y3L+Ix1brW>{c8%5!{FZU*BUFiDJ(821!gZO^|S?EN*cz%&V00000NkvXXu0mjf D2%^A` literal 0 HcmV?d00001 diff --git a/img/icon.png b/img/icon-32-dark.png similarity index 100% rename from img/icon.png rename to img/icon-32-dark.png diff --git a/index.html b/index.html deleted file mode 100644 index 9046054..0000000 --- a/index.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - Fedishare - - - - - - - - - - - - - - - - diff --git a/js/apiRequest.js b/js/apiRequest.js deleted file mode 100644 index 293b850..0000000 --- a/js/apiRequest.js +++ /dev/null @@ -1,48 +0,0 @@ -/** -* Basic wrapper method for api calls to a nextcloud instance. -* -* @param {string} endpoint Full URL -* @param {string} method GET|POST -* @param {mixed} data Payload -* @param {string} username -* @param {string} password -* @returns {Promise} -*/ -function apiRequest(endpoint, method, data, username, password) { - const headers = new Headers(); - headers.append('Authorization', 'Basic ' + btoa(username + ':' + password)); - headers.append('Accept', 'application/json, text/plain, */*'); - const opts = { method, headers, credentials: 'omit' }; - - if (method.toLowerCase() !== 'get') { - headers.append('Content-Type','application/json;charset=UTF-8'); - opts.body = JSON.stringify(data); - } - - const request = new Request(endpoint, opts); - - return new Promise((resolve, reject) => { - fetch(request).then(response => { - if (response.status !== 200) { - reject(response); - return; - } - - const contentType = response.headers.get('content-type'); - if (contentType && contentType.indexOf('application/json') !== -1) { - response.json().then(json => { - if (!json) { - reject({ statusText: 'Empty reply from server', status: 0 }); - return; - } - - resolve(json); - }); - } else { - reject({ statusText: 'Invalid reply from server', status: 0 }); - } - }).catch(function (e) { - reject({ statusText: e, status: 0 }); - }); - }); -} diff --git a/js/background.js b/js/background.js new file mode 100644 index 0000000..94c6830 --- /dev/null +++ b/js/background.js @@ -0,0 +1,17 @@ +const host = { + diasporaDefault: `https://joindiaspora.com`, + friendicaDefault: `https://libranet.de`, + gnusocialDefault: `https://gnusocial.net`, + hubzillaDefault: `https://demo.hubzilla.org`, + lemmyDefault: `https://dev.lemmy.ml`, + mastodonDefault: `https://mastodon.social`, + pleromaDefault: `https://blob.cat`, + socialhomeDefault: `https://socialhome.network`, + xmppDefault: `https://suchat.org`, + + // shortcut command + shortcutDefault: `Ctrl+Shift+U`, +} + + +export {host} diff --git a/js/index.js b/js/index.js index 1a7200e..724bc8e 100644 --- a/js/index.js +++ b/js/index.js @@ -1,260 +1,148 @@ /* - Original by yuvaraj - Copyright (c) 2016 - Forked by Mickie - Copyleft (ɔ) 2019 - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + Copyleft (ɔ) 2021 Mickie - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - You should have received a copy of the GNU General Public License - along with this program. If not, see . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ -; -(function () { - 'use strict'; +import {host} from './background.js' - // Send Message To Background Script - function sendMessage(tab) { - const { id } = tab; - browser.runtime.sendMessage({ - type: 'sharer-tab-id', - data: { id } - }); +window.onload = () => { + + /* + * Assign and get URLs To Respective Element + */ + + const urlAssigner = (btn = {}) => { + const { id, href } = btn + const a = document.getElementById(id) + a.href = href + a.target = '_blank' + a.addEventListener('click', e => { + window.setTimeout(() => window.close(), 10) + }) + } + + (function getCurrentTabUrl() { + const queryInfo = { + active: true, + currentWindow: true, } - /* - * Assign URLs To Respective Element - */ - function urlAssigner(btn = {}) { - const { id, href } = btn; - const a = document.getElementById(id); - a.href = href; - a.target = '_blank'; - a.addEventListener('click', event => { - console.log(id); - if(id == 'url-nextcloud') { - event.preventDefault(); - sendNextcloudBookmark(); - } - //window.setTimeout(() => window.close(), 10) - }); + chrome.tabs.query(queryInfo, (tabs = []) => { + if (tabs.length === 0) { + return + } + + const tab = (tabs[0] || {}); + const tabUrL = encodeURIComponent(tab.url) + const tabTitle = encodeURIComponent(tab.title) + mkBtns(tabUrL, tabTitle) + }) + })() + + + /* + * Make Social Button Objects + */ + + const mkBtns = (tabUrl = '', tabTitle = '') => { + + // Set post items + + const diasporaPost = `/bookmarklet?url=${tabUrl}&title=${tabTitle}&jump-doclose` + const friendicaPost = `/bookmarklet?url=${tabUrl}&title=${tabTitle}&jump-doclose` + const gnusocialPost = `/?action=newnotice&status_textarea=${tabTitle} ${tabUrl}` + const hubzillaPost = `/rpost?body=${tabTitle} &url=${tabUrl}` + const lemmyPost = `/create_post?url=${tabUrl}&title=${tabTitle}` + const mastodonPost = `/share?text=${tabTitle}&url=${tabUrl}` + const pleromaPost = `/share?message=${tabTitle} ${tabUrl}` + const socialhomePost = `/bookmarklet?url=${tabUrl}&title=${tabTitle}&jump-doclose` + const xmppPost = `?message=${tabTitle} ${tabUrl}` + + // Set social Buttons + + const socialBtns = [] + + const diaspora = {} + const friendica = {} + const gnusocial = {} + const hubzilla = {} + const lemmy = {} + const mastodon = {} + const pleroma = {} + const socialhome = {} + const xmpp = {} + + const itemBtn = (item, hostId, hostKey, hostDefault, hostPost) => { + let itemHost = browser.storage.sync.get(`${hostKey}`) + itemHost.then((res) => { + document.querySelector(`#${hostId}`) + .href = [res[hostKey] || hostDefault] + hostPost + }) + item.href = itemHost + item.id = hostId + socialBtns.push(item) } - function sendNextcloudBookmark(tabUrl) { + itemBtn(diaspora, 'url-diaspora', 'diasporaHost', host.diasporaDefault, diasporaPost) + itemBtn(friendica, 'url-friendica', 'friendicaHost', host.friendicaDefault, friendicaPost) + itemBtn(gnusocial, 'url-gnusocial', 'gnusocialHost', host.gnusocialDefault, gnusocialPost) + itemBtn(hubzilla, 'url-hubzilla', 'hubzillaHost', host.hubzillaDefault, hubzillaPost) + itemBtn(lemmy, 'url-lemmy', 'lemmyHost', host.lemmyDefault, lemmyPost) + itemBtn(mastodon, 'url-mastodon', 'mastodonHost', host.mastodonDefault, mastodonPost) + itemBtn(pleroma, 'url-pleroma', 'pleromaHost', host.pleromaDefault, pleromaPost) + itemBtn(socialhome, 'url-socialhome', 'socialhomeHost', host.socialhomeDefault, socialhomePost) + itemBtn(xmpp, 'url-xmpp', 'xmppHost', host.xmppDefault, xmppPost) + + socialBtns.forEach(urlAssigner) + } - $.support.cors = true; + + /* + * hide/show buttons + */ - console.log('Sending...'); + const enableItem = (hostKey, hostId) => { + const item = chrome.storage.sync.get(`${hostKey}`, value => { + if (value[hostKey]) { + document.getElementById(`${hostId}`).removeAttribute('hidden') + } + }) + } - var server = $('#url-nextcloud').attr('data-server'); - var username = $('#url-nextcloud').attr('data-username'); - var password = $('#url-nextcloud').attr('data-password'); - var endpoint = server + '/index.php/apps/bookmarks/public/rest/v2/bookmark'; - var tabUrL = $('#url-nextcloud').attr('data-url'); - var tabTitle = $('#url-nextcloud').attr('data-title'); + enableItem('diasporaCheck', 'url-diaspora') + enableItem('friendicaCheck', 'url-friendica') + enableItem('gnusocialCheck', 'url-gnusocial') + enableItem('hubzillaCheck', 'url-hubzilla') + enableItem('lemmyCheck', 'url-lemmy') + enableItem('mastodonCheck', 'url-mastodon') + enableItem('pleromaCheck', 'url-pleroma') + enableItem('socialhomeCheck', 'url-socialhome') + enableItem('xmppCheck', 'url-xmpp') - console.log(server); - console.log(username,password); - console.log(tabUrL,tabTitle); + + /* + * Open options page + */ + + function openOptions() { + browser.runtime.openOptionsPage() + } - $.ajax({ - url: endpoint, - method: "POST", - //basic authentication - beforeSend: function (xhr) { - xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password)); - }, - data: { - url: tabUrL, - title: tabTitle, - description: '', - is_public: true - }, - dataType: 'json', - }) - .success(function(result) { - console.log(result); - $('.alerta').html('
Successfully bookmarked!
'); - }) - .error(function(XMLHttpRequest, status, errorThrown){ - $('.alerta').html('
Error, something was wrong!
'); - console.log('ajax error'); - console.log("Status: " + status); - console.log("Error: " + errorThrown); - }); - } + const el = document.getElementById('options') + el.addEventListener('click', function() {openOptions()}, false) - /* - * Make Social Button Objects - */ - - function mkBtns(tabUrl = '', tabTitle = '') { - - // Set hosts - - var gnusocialItem = browser.storage.sync.get('gnusocialHost'); - gnusocialItem.then((res) => { - document.querySelector("#url-gnusocial").href = [res.gnusocialHost || `https://gnusocial.no`] + `/?action=newnotice&status_textarea=${tabTitle} ${tabUrl}`; - }); - - var mastodonItem = browser.storage.sync.get('mastodonHost'); - mastodonItem.then((res) => { - document.querySelector("#url-mastodon").href = [res.mastodonHost || `https://mastodon.social`] + `/share?text=${tabTitle}&url=${tabUrl}`; - }); - - var hubzillaItem = browser.storage.sync.get('hubzillaHost'); - hubzillaItem.then((res) => { - document.querySelector("#url-hubzilla").href = [res.hubzillaHost || `https://start.hubzilla.org`] + `/rpost?body=${tabTitle} &url=${tabUrl}`; - }); - - var diasporaItem = browser.storage.sync.get('diasporaHost'); - diasporaItem.then((res) => { - document.querySelector("#url-diaspora").href = [res.diasporaHost || `https://diasp.eu`] + `/bookmarklet?url=${tabUrl}&title=${tabTitle}&jump-doclose`; - }); - - var friendicaItem = browser.storage.sync.get('friendicaHost'); - friendicaItem.then((res) => { - document.querySelector("#url-friendica").href = [res.friendicaHost || `https://libranet.de`] + `/bookmarklet?url=${tabUrl}&title=${tabTitle}&jump-doclose`; - }); - - var socialhomeItem = browser.storage.sync.get('socialhomeHost'); - socialhomeItem.then((res) => { - document.querySelector("#url-socialhome").href = [res.socialhomeHost || `https://socialhome.network`] + `/bookmarklet?url=${tabUrl}&title=${tabTitle}&jump-doclose`; - }); - - var lemmyItem = browser.storage.sync.get('lemmyHost'); - lemmyItem.then((res) => { - document.querySelector("#url-lemmy").href = [res.lemmyHost || `https://dev.lemmy.ml`] + `/create_post?url=${tabUrl}&title=${tabTitle}`; - }); - - var pleromaItem = browser.storage.sync.get('pleromaHost'); - pleromaItem.then((res) => { - document.querySelector("#url-pleroma").href = [res.pleromaHost || `https://pleroma-social.ml`] + `/share?message=${tabTitle} ${tabUrl}`; - }); - - var xmppItem = browser.storage.sync.get('xmppHost'); - xmppItem.then((res) => { - document.querySelector("#url-xmpp").href = `xmpp:` + [res.xmppHost] + `?message=${tabTitle} ${tabUrl}`; - }); - - var nextcloudHost = browser.storage.sync.get('nextcloudHost'); - var nextcloudUsername = browser.storage.sync.get('nextcloudUsername'); - var nextcloudPassword = browser.storage.sync.get('nextcloudPassword'); - nextcloudHost.then((res) => { - document.querySelector("#url-nextcloud").href = [res.nextcloudHost]; - document.querySelector("#url-nextcloud").dataset.server = [res.nextcloudHost]; - document.querySelector("#url-nextcloud").dataset.url = tabUrl; - document.querySelector("#url-nextcloud").dataset.title = tabTitle; - }); - nextcloudUsername.then((res) => { - document.querySelector("#url-nextcloud").dataset.username = [res.nextcloudUsername]; - }); - nextcloudPassword.then((res) => { - document.querySelector("#url-nextcloud").dataset.password = [res.nextcloudPassword]; - }); - - // Set social Buttons - - const socialBtns = []; - - const gnusocial = {}; - gnusocial.href = gnusocialItem; - gnusocial.id = 'url-gnusocial'; - socialBtns.push(gnusocial); - - const mastodon = {}; - mastodon.href = mastodonItem; - mastodon.id = 'url-mastodon'; - socialBtns.push(mastodon); - - const hubzilla = {}; - hubzilla.href = hubzillaItem; - hubzilla.id = 'url-hubzilla'; - socialBtns.push(hubzilla); - - const diaspora = {}; - diaspora.href = diasporaItem; - diaspora.id = 'url-diaspora'; - socialBtns.push(diaspora); - - const friendica = {}; - friendica.href = friendicaItem; - friendica.id = 'url-friendica'; - socialBtns.push(friendica); - - const socialhome = {}; - socialhome.href = socialhomeItem; - socialhome.id = 'url-socialhome'; - socialBtns.push(socialhome); - - const lemmy = {}; - lemmy.href = lemmyItem; - lemmy.id = 'url-lemmy'; - socialBtns.push(lemmy); - - const pleroma = {}; - pleroma.href = pleromaItem; - pleroma.id = 'url-pleroma'; - socialBtns.push(pleroma); - - const xmpp = {}; - xmpp.href = xmppItem; - xmpp.id = 'url-xmpp'; - socialBtns.push(xmpp); - - const nextcloud = {}; - nextcloud.href = nextcloudHost; - nextcloud.id = 'url-nextcloud'; - socialBtns.push(nextcloud); - - socialBtns.forEach(urlAssigner); - } - - ; - (function getCurrentTabUrl() { - const queryInfo = { - active: true, - currentWindow: true - }; - - chrome.tabs.query(queryInfo, (tabs = []) => { - if (tabs.length === 0) { - return; - } - - const tab = (tabs[0] || {}); - const tabUrL = encodeURIComponent(tab.url); - const tabTitle = encodeURIComponent(tab.title); - mkBtns(tabUrL, tabTitle); - }); - - // End - })(); - -})(); - -/* - * Make Shortcut - */ - -let gettingAllCommands = browser.commands.getAll(); -gettingAllCommands.then((commands) => { - for (let command of commands) { - console.log(command); - } -}); - -browser.commands.onCommand.addListener(function(command) { - if (command == "_execute_browser_action") { - // console.log("execute the feature!"); - } -}); + +} diff --git a/js/jquery.js b/js/jquery.js deleted file mode 100644 index a1c07fd..0000000 --- a/js/jquery.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 { + saveHost('diaspora-host', 'diasporaHost') + saveHost('friendica-host', 'friendicaHost') + saveHost('gnusocial-host', 'gnusocialHost') + saveHost('hubzilla-host', 'hubzillaHost') + saveHost('lemmy-host', 'lemmyHost') + saveHost('mastodon-host', 'mastodonHost') + saveHost('pleroma-host', 'pleromaHost') + saveHost('socialhome-host', 'socialhomeHost') + saveHost('xmpp-host', 'xmppHost') + + saveCheckbox('diaspora-check', 'diasporaCheck') + saveCheckbox('friendica-check', 'friendicaCheck') + saveCheckbox('gnusocial-check', 'gnusocialCheck') + saveCheckbox('hubzilla-check', 'hubzillaCheck') + saveCheckbox('lemmy-check', 'lemmyCheck') + saveCheckbox('mastodon-check', 'mastodonCheck') + saveCheckbox('pleroma-check', 'pleromaCheck') + saveCheckbox('socialhome-check', 'socialhomeCheck') + saveCheckbox('xmpp-check', 'xmppCheck') + + e.preventDefault() +} + + +const saveHost = (hostId, hostKey) => { browser.storage.sync.set({ - gnusocialHost: document.querySelector("#gnusocialHost").value, - mastodonHost: document.querySelector("#mastodonHost").value, - pleromaHost: document.querySelector("#pleromaHost").value, - hubzillaHost: document.querySelector("#hubzillaHost").value, - diasporaHost: document.querySelector("#diasporaHost").value, - friendicaHost: document.querySelector("#friendicaHost").value, - lemmyHost: document.querySelector("#lemmyHost").value, - socialhomeHost: document.querySelector("#socialhomeHost").value, - xmppHost: document.querySelector("#xmppHost").value, - nextcloudHost: document.querySelector("#nextcloudHost").value, - nextcloudUsername: document.querySelector("#nextcloudUsername").value, - nextcloudPassword: document.querySelector("#nextcloudPassword").value, - shortcut: document.querySelector("#shortcut").value - }); - e.preventDefault(); + [hostKey] : document.querySelector(`#${hostId}`).value + }) } -function restoreOptions() { - - var gettingGnusocial = browser.storage.sync.get('gnusocialHost'); - gettingGnusocial.then((res) => { - document.querySelector("#gnusocialHost").value = res.gnusocialHost || 'https://gnusocial.no'; - }); - - var gettingMastodon = browser.storage.sync.get('mastodonHost'); - gettingMastodon.then((res) => { - document.querySelector("#mastodonHost").value = res.mastodonHost || 'https://mastodon.social'; - }); - - var gettingPleroma = browser.storage.sync.get('pleromaHost'); - gettingPleroma.then((res) => { - document.querySelector("#pleromaHost").value = res.pleromaHost || 'https://pleroma-social.ml'; - }); - - var gettingHubzilla = browser.storage.sync.get('hubzillaHost'); - gettingHubzilla.then((res) => { - document.querySelector("#hubzillaHost").value = res.hubzillaHost || 'https://start.hubzilla.org'; - }); - - var gettingDiaspora = browser.storage.sync.get('diasporaHost'); - gettingDiaspora.then((res) => { - document.querySelector("#diasporaHost").value = res.diasporaHost || 'https://diasp.eu'; - }); - - var gettingFriendica = browser.storage.sync.get('friendicaHost'); - gettingFriendica.then((res) => { - document.querySelector("#friendicaHost").value = res.friendicaHost || 'https://libranet.de'; - }); - - var gettingLemmy = browser.storage.sync.get('lemmyHost'); - gettingLemmy.then((res) => { - document.querySelector("#lemmyHost").value = res.lemmyHost || 'https://dev.lemmy.ml'; - }); - - var gettingSocialhome = browser.storage.sync.get('socialhomeHost'); - gettingSocialhome.then((res) => { - document.querySelector("#socialhomeHost").value = res.socialhomeHost || 'https://socialhome.network'; - }); - - var gettingXmpp = browser.storage.sync.get('xmppHost'); - gettingXmpp.then((res) => { - document.querySelector("#xmppHost").value = res.xmppHost || 'https://suchat.org'; - }); - - var gettingNextcloudHost = browser.storage.sync.get('nextcloudHost'); - gettingNextcloudHost.then((res) => { - document.querySelector("#nextcloudHost").value = res.nextcloudHost || ''; - }); - - var gettingNextcloudUsername = browser.storage.sync.get('nextcloudUsername'); - gettingNextcloudUsername.then((res) => { - document.querySelector("#nextcloudUsername").value = res.nextcloudUsername || ''; - }); - - var gettingNextcloudPassword = browser.storage.sync.get('nextcloudPassword'); - gettingNextcloudPassword.then((res) => { - document.querySelector("#nextcloudPassword").value = res.nextcloudPassword || ''; - }); - - var gettingShortcut = browser.storage.sync.get('shortcut'); - gettingShortcut.then((res) => { - document.querySelector("#shortcut").value = res.shortcut || 'Ctrl+Shift+U'; - }); +const saveCheckbox = (checkId, checkKey) => { + let checkbox = document.getElementById(`${checkId}`) + if (checkbox.checked) { + browser.storage.sync.set({ + [checkKey] : document.querySelector(`#${checkId}`).checked = true + }) + } else { + browser.storage.sync.set({ + [checkKey] : document.querySelector(`#${checkId}`).checked = false + }) + } } -/** - * Keyboard shortcut - */ -const commandShorcut = '_execute_browser_action'; +const restoreOptions = () => { + restoreHost('diasporaHost', 'diaspora-host', host.diasporaDefault) + restoreHost('friendicaHost', 'friendica-host', host.friendicaDefault) + restoreHost('gnusocialHost', 'gnusocial-host', host.gnusocialDefault) + restoreHost('hubzillaHost', 'hubzilla-host', host.hubzillaDefault) + restoreHost('lemmyHost', 'lemmy-host', host.lemmyDefault) + restoreHost('mastodonHost', 'mastodon-host', host.mastodonDefault) + restoreHost('pleromaHost', 'pleroma-host', host.pleromaDefault) + restoreHost('socialhomeHost', 'socialhome-host', host.socialhomeDefault) + restoreHost('xmppHost', 'xmpp-host', host.xmppDefault) -/** - * Update the UI: set the value of the shortcut textbox. - */ -async function updateUI() { - let commands = await browser.commands.getAll(); - for (command of commands) { - if (command.name === commandShorcut) { - document.querySelector('#shortcut').value = command.shortcut; - } + restoreCheckbox('diasporaCheck', 'diaspora-check') + restoreCheckbox('friendicaCheck', 'friendica-check') + restoreCheckbox('gnusocialCheck', 'gnusocial-check') + restoreCheckbox('hubzillaCheck', 'hubzilla-check') + restoreCheckbox('lemmyCheck', 'lemmy-check') + restoreCheckbox('mastodonCheck', 'mastodon-check') + restoreCheckbox('pleromaCheck', 'pleroma-check') + restoreCheckbox('socialhomeCheck', 'socialhome-check') + restoreCheckbox('xmppCheck', 'xmpp-check') +} + + +const restoreHost = (hostKey, hostId, hostDefault) => { + let gettingItem = browser.storage.sync.get(`${hostKey}`) + gettingItem.then((res) => { + document.querySelector(`#${hostId}`).value = res[hostKey] || hostDefault + }) +} + +const restoreCheckbox = (checkKey, checkId) => { + const checkbox = chrome.storage.sync.get(`${checkKey}`, value => { + if (value[checkKey]) { + document.getElementById(`${checkId}`).checked = true } + }) } -/** - * Update the shortcut based on the value in the textbox. - */ -async function updateShortcut() { - await browser.commands.update({ - name: commandShorcut, - shortcut: document.querySelector('#shortcut').value - }); + +document.addEventListener('DOMContentLoaded', restoreOptions, saveCheckbox) +document.querySelector("form").addEventListener("submit", saveOptions) + +// test zone +function onGot(item) { + console.log(item); } -/** - * Reset the shortcut and update the textbox. - */ -async function resetShortcut() { - await browser.commands.reset(commandShorcut); - updateUI(); +function onError(error) { + console.log(`Error: ${error}`); } -/** - * Update the UI when the page loads. -*/ +let allItems = browser.storage.sync.get() +allItems.then(onGot, onError) -document.addEventListener('DOMContentLoaded', restoreOptions, updateUI); -document.querySelector("form").addEventListener("submit", saveOptions); -document.querySelector('#update').addEventListener('click', updateShortcut); -document.querySelector('#reset').addEventListener('click', resetShortcut); +const itemValueOpt = chrome.storage.sync.get('pleromaCheck', item => { + console.log(item.pleromaCheck) +}) diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..ab974c0 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "rootDir": "js", + }, + "exclude": ["node_modules"] +} diff --git a/manifest.json b/manifest.json index d3d5782..9b8988b 100644 --- a/manifest.json +++ b/manifest.json @@ -1,55 +1,63 @@ { - "manifest_version": 2, + "manifest_version": 2, - "name": "Share-freedom", - "description": "share the current tab on the fediverse", - "version": "2.1.2", - "author": "Mickie", + "name": "Share Freedom", + "description": "share the current tab on the fediverse", + "version": "2.1.3", + "author": "Mickie", - "browser_action": { - "default_icon": "img/icon.png", - "default_popup": "index.html", - "default_title": "Share freedom", - "theme_icons": [{ - "light": "img/icon-16-light.png", - "dark": "img/icon.png", - "size": 16 - }, { - "light": "img/icon-32-light.png", - "dark": "img/icon.png", - "size": 32 - }] - }, + "background": { + "scripts": ["js/background.js"], + "persistent": true + }, - "icons": { - "16":"img/icon.png", - "32":"img/icon.png" - }, + "browser_action": { + "default_icon": "img/icon-32-dark.png", + "default_popup": "html/index.html", + "default_title": "Share freedom", + "theme_icons": [{ + "light": "img/icon-16-light.png", + "dark": "img/icon-16-dark.png", + "size": 16 + }, { + "light": "img/icon-32-light.png", + "dark": "img/icon-32-dark.png", + "size": 32 + }] + }, - "commands": { - "_execute_browser_action": { - "suggested_key": { "default": "Ctrl+Shift+U" }, - "description": "Execute the extension" - } - }, + "icons": { + "16":"img/icon-16-dark.png", + "32":"img/icon-32-dark.png" + }, - "options_ui": { - "page": "options.html", - "browser_style": true - }, + "commands": { + "_execute_browser_action": { + "suggested_key": { + "default": "Ctrl+Shift+U" + }, + "description": "Execute the extension" + } + }, - "applications": { - "gecko": { - "id": "{c5880375-5496-4d02-ba27-7830809dbf08}", - "strict_min_version": "59.0" - } - }, + "options_ui": { + "page": "html/options.html", + "browser_style": true, + "chrome_style": true + }, - "permissions": [ - "tabs", - "activeTab", - "https://*/*", - "storage" - ] + "applications": { + "gecko": { + "id": "{c5880375-5496-4d02-ba27-7830809dbf08}", + "strict_min_version": "59.0" + } + }, + + "permissions": [ + "tabs", + "activeTab", + "https://*/*", + "storage" + ] } diff --git a/options.html b/options.html deleted file mode 100644 index 3f952e5..0000000 --- a/options.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - Share freedom settings - - - - - - - - - - - -
-
-
Fedishare
-
Wallpaper by: - yarmo [at] fosstodon.org -
-
-
-

Settings

-
-

Instances

- -

-

Gnusocial

- - -

-

-

Mastodon / Misskey

- - -

-

-

Pleroma

- - -

-

-

Hubzilla / Osada / Zap

- - -

-

-

Diaspora

- - -

-

-

Friendica

- - -

-

-

Lemmy

- - -

-

-

Socialhome

- - -

-

-

Xmpp ID

- - -

-

-

Netxcloud host

- - -

-

-

Netxcloud username

- - -

-

-

Netxcloud password

- - -

-
-
-

- - -

-
-
-

Keyboard shortcut

- -

- - -

-
-
- - - diff --git a/package-lock.json b/package-lock.json index 3ee7a27..660047a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,2034 +1,5 @@ { - "name": "Share-freedom", - "version": "2.1.2", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-slice": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", - "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", - "dev": true - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true - }, - "bl": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=", - "dev": true, - "requires": { - "readable-stream": "~1.0.26" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - } - } - }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "bufferstreams": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.1.tgz", - "integrity": "sha1-AWE3MGCsWYjv+ZBYcxEU9uGV1R4=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "clean-css": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.8.tgz", - "integrity": "sha1-BhRVsklKdQrJj0bY1euxfGeeqdE=", - "dev": true, - "requires": { - "source-map": "0.5.x" - } - }, - "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "cloneable-readable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", - "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^1.0.6", - "through2": "^2.0.1" - } - }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-with-sourcemaps": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz", - "integrity": "sha1-9Vs74q60dgGxCi1SWcz7cP0vHdY=", - "dev": true, - "requires": { - "source-map": "^0.5.1" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "dateformat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", - "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=", - "dev": true - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "deprecated": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", - "dev": true - }, - "detect-file": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", - "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", - "dev": true, - "requires": { - "fs-exists-sync": "^0.1.0" - } - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9" - } - }, - "end-of-stream": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", - "dev": true, - "requires": { - "once": "~1.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "dev": true, - "requires": { - "os-homedir": "^1.0.1" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "fancy-log": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", - "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", - "dev": true, - "requires": { - "chalk": "^1.1.1", - "time-stamp": "^1.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", - "dev": true - }, - "findup-sync": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", - "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", - "dev": true, - "requires": { - "detect-file": "^0.1.0", - "is-glob": "^2.0.1", - "micromatch": "^2.3.7", - "resolve-dir": "^0.1.0" - } - }, - "fined": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", - "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "dependencies": { - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - } - } - }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", - "dev": true - }, - "flagged-respawn": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", - "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", - "dev": true - }, - "gaze": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", - "dev": true, - "requires": { - "globule": "~0.1.0" - } - }, - "glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "glob-stream": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", - "dev": true, - "requires": { - "glob": "^4.3.1", - "glob2base": "^0.0.12", - "minimatch": "^2.0.1", - "ordered-read-streams": "^0.1.0", - "through2": "^0.6.1", - "unique-stream": "^1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - } - } - }, - "glob-watcher": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", - "dev": true, - "requires": { - "gaze": "^0.5.1" - } - }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", - "dev": true, - "requires": { - "find-index": "^0.1.1" - } - }, - "global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", - "dev": true, - "requires": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" - } - }, - "global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" - } - }, - "globule": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", - "dev": true, - "requires": { - "glob": "~3.1.21", - "lodash": "~1.0.1", - "minimatch": "~0.2.11" - }, - "dependencies": { - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", - "dev": true, - "requires": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" - } - }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" - } - } - } - }, - "glogg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", - "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "dev": true, - "requires": { - "natives": "^1.1.0" - } - }, - "gulp": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", - "dev": true, - "requires": { - "archy": "^1.0.0", - "chalk": "^1.0.0", - "deprecated": "^0.0.1", - "gulp-util": "^3.0.0", - "interpret": "^1.0.0", - "liftoff": "^2.1.0", - "minimist": "^1.1.0", - "orchestrator": "^0.3.0", - "pretty-hrtime": "^1.0.0", - "semver": "^4.1.0", - "tildify": "^1.0.0", - "v8flags": "^2.0.2", - "vinyl-fs": "^0.3.0" - } - }, - "gulp-clean-css": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-3.8.0.tgz", - "integrity": "sha512-R96U/umCB+XfmMNQ/VOPqMYHY9m+VeDCk9iv9Y7ysOx4dlX2Zkw1xDsO0vo7AzokARtQPEY7u1xm4/x6v7oABg==", - "dev": true, - "requires": { - "clean-css": "4.1.8", - "gulp-util": "3.0.8", - "through2": "2.0.3", - "vinyl-sourcemaps-apply": "0.2.1" - } - }, - "gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", - "dev": true, - "requires": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", - "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } - } - }, - "gulp-exec": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/gulp-exec/-/gulp-exec-2.1.3.tgz", - "integrity": "sha1-RgpOyN+GhB0XOLx0lYxo5XaTQtk=", - "dev": true, - "requires": { - "gulp-util": "^3.0.7", - "gulplog": "^1.0.0", - "through2": "^2.0.1" - } - }, - "gulp-html-replace": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/gulp-html-replace/-/gulp-html-replace-1.6.2.tgz", - "integrity": "sha1-HhBm+m+FOMjRmemaNENHLyu0YkI=", - "dev": true, - "requires": { - "bluebird": "^3.1.1", - "clone": "^1.0.2", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.4", - "slash": "^1.0.0", - "vinyl-buffer": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "gulp-htmlmin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-htmlmin/-/gulp-htmlmin-3.0.0.tgz", - "integrity": "sha1-GeqAAtEjHWsfGKEtIPKmand3D7M=", - "dev": true, - "requires": { - "bufferstreams": "^1.1.0", - "gulp-util": "^3.0.7", - "html-minifier": "^3.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2", - "tryit": "^1.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "gulp-rename": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", - "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", - "dev": true - }, - "gulp-uglify-es": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/gulp-uglify-es/-/gulp-uglify-es-0.1.3.tgz", - "integrity": "sha512-5M83gIfJ/5lysQGwoEpVW6c1mVzsGwaJQA/XiyucsvI1pJ1GhTy8mQK+kxAoSCjkMAjzvDiK6EE9Dw4YghI9dA==", - "dev": true, - "requires": { - "gulp-exec": "^2.1.3", - "o-stream": "^0.1.12", - "uglify-es": "^3.0.26" - }, - "dependencies": { - "uglify-es": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.1.1.tgz", - "integrity": "sha512-oESWzXRJ5cHfxZnj1wS4WAy1Tcn4RbMhSX6lhMpzkHN+6SrO6Wmlg9dK4M+K/MXHIwndOD7wme7fEGuFcEf4BQ==", - "dev": true, - "requires": { - "commander": "~2.11.0", - "source-map": "~0.5.1" - } - } - } - }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "html-minifier": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.5.tgz", - "integrity": "sha512-g+1+NBycQI0fGnggd52JM8TRUweG7+9W2wrtjGitMAqc4G7maweAHvVAAjz9veHseIH3tYKE2lk2USGSoewIrQ==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.1.x", - "commander": "2.11.x", - "he": "1.1.x", - "ncname": "1.0.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.1.x" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "dev": true - }, - "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", - "dev": true - }, - "is-absolute": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", - "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", - "dev": true, - "requires": { - "is-relative": "^0.2.1", - "is-windows": "^0.2.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-relative": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", - "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", - "dev": true, - "requires": { - "is-unc-path": "^0.1.1" - } - }, - "is-unc-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", - "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.0" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "liftoff": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", - "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^0.4.2", - "fined": "^1.0.1", - "flagged-respawn": "^0.3.2", - "lodash.isplainobject": "^4.0.4", - "lodash.isstring": "^4.0.1", - "lodash.mapvalues": "^4.4.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "^3.0.0" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "dev": true, - "requires": { - "brace-expansion": "^1.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - } - }, - "natives": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", - "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", - "dev": true - }, - "ncname": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", - "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", - "dev": true, - "requires": { - "xml-char-classes": "^1.0.0" - } - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "o-stream": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/o-stream/-/o-stream-0.1.12.tgz", - "integrity": "sha512-3w9nFmDLnbwuQzgxFKcjeUlBfeib+g1/67A5gGiTG1W1/oUNI2qrSiV5F5+2ZbH89ZbmpWuv4jveQO9AZ/1n7A==", - "dev": true - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "orchestrator": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", - "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", - "dev": true, - "requires": { - "end-of-stream": "~0.1.5", - "sequencify": "~0.0.7", - "stream-consume": "~0.1.0" - } - }, - "ordered-read-streams": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", - "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parse-filepath": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", - "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", - "dev": true, - "requires": { - "is-absolute": "^0.2.3", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "resolve": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", - "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - }, - "resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", - "dev": true, - "requires": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "sequencify": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", - "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", - "dev": true - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "sparkles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", - "dev": true - }, - "stream-consume": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", - "dev": true, - "requires": { - "first-chunk-stream": "^1.0.0", - "is-utf8": "^0.2.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "tildify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0" - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true - }, - "uglify-js": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.1.tgz", - "integrity": "sha512-f7DpmEgt/RYAKzQzcfahn3JYZHobDwTZCa8oixC7pweVGEIizTX2kTYdNWcdk00xsMJqUhI8RDAa9HXHXGhNxA==", - "dev": true, - "requires": { - "commander": "~2.11.0", - "source-map": "~0.5.1" - } - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "unique-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", - "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, - "requires": { - "user-home": "^1.1.1" - } - }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vinyl-buffer/-/vinyl-buffer-1.0.0.tgz", - "integrity": "sha1-ygZ+oIQx1QdyKx3lCD9gJhbrwjQ=", - "dev": true, - "requires": { - "bl": "^0.9.1", - "through2": "^0.6.1" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - } - } - }, - "vinyl-fs": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", - "dev": true, - "requires": { - "defaults": "^1.0.0", - "glob-stream": "^3.1.5", - "glob-watcher": "^0.0.6", - "graceful-fs": "^3.0.0", - "mkdirp": "^0.5.0", - "strip-bom": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - } - } - } - }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", - "dev": true, - "requires": { - "source-map": "^0.5.1" - } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xml-char-classes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", - "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - } - } + "name": "share-freedom", + "version": "2.1.3", + "lockfileVersion": 1 } diff --git a/package.json b/package.json index 140933a..b5023ff 100644 --- a/package.json +++ b/package.json @@ -1,30 +1,23 @@ { - "name": "Share-freedom", - "version": "2.1.2", - "description": "share the current tab on the fediverse", - "main": "gulpfile.js", - "dependencies": {}, - "devDependencies": { - "gulp": "^3.9.1", - "gulp-clean-css": "^3.8.0", - "gulp-concat": "^2.6.1", - "gulp-html-replace": "^1.6.2", - "gulp-htmlmin": "^3.0.0", - "gulp-rename": "^1.2.2", - "gulp-uglify-es": "^0.1.3" - }, + "name": "share-freedom", + "version": "2.1.3", + "description": "Share the current tab on the fediverse", + "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "gulp" + "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", - "url": "git+https://gitlab.com/mickie1/share-freedom-addon.git" + "url": "git+https://gitlab.com/mickie1/share-freedom-extension.git" }, + "keywords": [ + "share", + "fediverse" + ], "author": "Mickie", "license": "GPL-3.0", "bugs": { - "url": "https://gitlab.com/mickie1/share-freedom-addon/issues" + "url": "https://gitlab.com/mickie1/share-freedom-extension/issues" }, - "homepage": "https://addons.mozilla.org/en-US/firefox/addon/share-freedom/" + "homepage": "https://gitlab.com/mickie1/share-freedom-extension#readme" }