[Pkg-javascript-commits] [node-css] 09/17: bundle dependencies - they are or too small or used only in this content
Leo Iannacone
l3on-guest at moszumanska.debian.org
Sun Oct 12 12:15:54 UTC 2014
This is an automated email from the git hooks/post-receive script.
l3on-guest pushed a commit to branch master
in repository node-css.
commit 87199f2f748adaadeed1800f69e8ab5fcf117c04
Author: Leo Iannacone <l3on at ubuntu.com>
Date: Sun Oct 12 13:19:52 2014 +0200
bundle dependencies - they are or too small or used only in this content
---
debian/patches/0000-bundle_atob.patch | 626 ++++++
debian/patches/0001-bundle_urix.patch | 229 +++
debian/patches/0002-bundle_resolve-url.patch | 382 ++++
debian/patches/0003-bundle_source-map-url.patch | 764 +++++++
.../patches/0004-bundle_source-map-resolve.patch | 2109 ++++++++++++++++++++
debian/patches/series | 5 +
6 files changed, 4115 insertions(+)
diff --git a/debian/patches/0000-bundle_atob.patch b/debian/patches/0000-bundle_atob.patch
new file mode 100644
index 0000000..cb35d94
--- /dev/null
+++ b/debian/patches/0000-bundle_atob.patch
@@ -0,0 +1,626 @@
+Description: Bundle atob as patch. Too small to be packaged.
+Author: Leo Iannacone <l3on at ubuntu.com>
+Forwarded: not-needed
+Last-Update: 2014-10-12
+
+--- /dev/null
++++ node-css-2.1.0/node_modules/atob/LICENSE
+@@ -0,0 +1,191 @@
++Apache License
++Version 2.0, January 2004
++http://www.apache.org/licenses/
++
++TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
++
++1. Definitions.
++
++"License" shall mean the terms and conditions for use, reproduction, and
++distribution as defined by Sections 1 through 9 of this document.
++
++"Licensor" shall mean the copyright owner or entity authorized by the copyright
++owner that is granting the License.
++
++"Legal Entity" shall mean the union of the acting entity and all other entities
++that control, are controlled by, or are under common control with that entity.
++For the purposes of this definition, "control" means (i) the power, direct or
++indirect, to cause the direction or management of such entity, whether by
++contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
++outstanding shares, or (iii) beneficial ownership of such entity.
++
++"You" (or "Your") shall mean an individual or Legal Entity exercising
++permissions granted by this License.
++
++"Source" form shall mean the preferred form for making modifications, including
++but not limited to software source code, documentation source, and configuration
++files.
++
++"Object" form shall mean any form resulting from mechanical transformation or
++translation of a Source form, including but not limited to compiled object code,
++generated documentation, and conversions to other media types.
++
++"Work" shall mean the work of authorship, whether in Source or Object form, made
++available under the License, as indicated by a copyright notice that is included
++in or attached to the work (an example is provided in the Appendix below).
++
++"Derivative Works" shall mean any work, whether in Source or Object form, that
++is based on (or derived from) the Work and for which the editorial revisions,
++annotations, elaborations, or other modifications represent, as a whole, an
++original work of authorship. For the purposes of this License, Derivative Works
++shall not include works that remain separable from, or merely link (or bind by
++name) to the interfaces of, the Work and Derivative Works thereof.
++
++"Contribution" shall mean any work of authorship, including the original version
++of the Work and any modifications or additions to that Work or Derivative Works
++thereof, that is intentionally submitted to Licensor for inclusion in the Work
++by the copyright owner or by an individual or Legal Entity authorized to submit
++on behalf of the copyright owner. For the purposes of this definition,
++"submitted" means any form of electronic, verbal, or written communication sent
++to the Licensor or its representatives, including but not limited to
++communication on electronic mailing lists, source code control systems, and
++issue tracking systems that are managed by, or on behalf of, the Licensor for
++the purpose of discussing and improving the Work, but excluding communication
++that is conspicuously marked or otherwise designated in writing by the copyright
++owner as "Not a Contribution."
++
++"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
++of whom a Contribution has been received by Licensor and subsequently
++incorporated within the Work.
++
++2. Grant of Copyright License.
++
++Subject to the terms and conditions of this License, each Contributor hereby
++grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
++irrevocable copyright license to reproduce, prepare Derivative Works of,
++publicly display, publicly perform, sublicense, and distribute the Work and such
++Derivative Works in Source or Object form.
++
++3. Grant of Patent License.
++
++Subject to the terms and conditions of this License, each Contributor hereby
++grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
++irrevocable (except as stated in this section) patent license to make, have
++made, use, offer to sell, sell, import, and otherwise transfer the Work, where
++such license applies only to those patent claims licensable by such Contributor
++that are necessarily infringed by their Contribution(s) alone or by combination
++of their Contribution(s) with the Work to which such Contribution(s) was
++submitted. If You institute patent litigation against any entity (including a
++cross-claim or counterclaim in a lawsuit) alleging that the Work or a
++Contribution incorporated within the Work constitutes direct or contributory
++patent infringement, then any patent licenses granted to You under this License
++for that Work shall terminate as of the date such litigation is filed.
++
++4. Redistribution.
++
++You may reproduce and distribute copies of the Work or Derivative Works thereof
++in any medium, with or without modifications, and in Source or Object form,
++provided that You meet the following conditions:
++
++You must give any other recipients of the Work or Derivative Works a copy of
++this License; and
++You must cause any modified files to carry prominent notices stating that You
++changed the files; and
++You must retain, in the Source form of any Derivative Works that You distribute,
++all copyright, patent, trademark, and attribution notices from the Source form
++of the Work, excluding those notices that do not pertain to any part of the
++Derivative Works; and
++If the Work includes a "NOTICE" text file as part of its distribution, then any
++Derivative Works that You distribute must include a readable copy of the
++attribution notices contained within such NOTICE file, excluding those notices
++that do not pertain to any part of the Derivative Works, in at least one of the
++following places: within a NOTICE text file distributed as part of the
++Derivative Works; within the Source form or documentation, if provided along
++with the Derivative Works; or, within a display generated by the Derivative
++Works, if and wherever such third-party notices normally appear. The contents of
++the NOTICE file are for informational purposes only and do not modify the
++License. You may add Your own attribution notices within Derivative Works that
++You distribute, alongside or as an addendum to the NOTICE text from the Work,
++provided that such additional attribution notices cannot be construed as
++modifying the License.
++You may add Your own copyright statement to Your modifications and may provide
++additional or different license terms and conditions for use, reproduction, or
++distribution of Your modifications, or for any such Derivative Works as a whole,
++provided Your use, reproduction, and distribution of the Work otherwise complies
++with the conditions stated in this License.
++
++5. Submission of Contributions.
++
++Unless You explicitly state otherwise, any Contribution intentionally submitted
++for inclusion in the Work by You to the Licensor shall be under the terms and
++conditions of this License, without any additional terms or conditions.
++Notwithstanding the above, nothing herein shall supersede or modify the terms of
++any separate license agreement you may have executed with Licensor regarding
++such Contributions.
++
++6. Trademarks.
++
++This License does not grant permission to use the trade names, trademarks,
++service marks, or product names of the Licensor, except as required for
++reasonable and customary use in describing the origin of the Work and
++reproducing the content of the NOTICE file.
++
++7. Disclaimer of Warranty.
++
++Unless required by applicable law or agreed to in writing, Licensor provides the
++Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
++WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
++including, without limitation, any warranties or conditions of TITLE,
++NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
++solely responsible for determining the appropriateness of using or
++redistributing the Work and assume any risks associated with Your exercise of
++permissions under this License.
++
++8. Limitation of Liability.
++
++In no event and under no legal theory, whether in tort (including negligence),
++contract, or otherwise, unless required by applicable law (such as deliberate
++and grossly negligent acts) or agreed to in writing, shall any Contributor be
++liable to You for damages, including any direct, indirect, special, incidental,
++or consequential damages of any character arising as a result of this License or
++out of the use or inability to use the Work (including but not limited to
++damages for loss of goodwill, work stoppage, computer failure or malfunction, or
++any and all other commercial damages or losses), even if such Contributor has
++been advised of the possibility of such damages.
++
++9. Accepting Warranty or Additional Liability.
++
++While redistributing the Work or Derivative Works thereof, You may choose to
++offer, and charge a fee for, acceptance of support, warranty, indemnity, or
++other liability obligations and/or rights consistent with this License. However,
++in accepting such obligations, You may act only on Your own behalf and on Your
++sole responsibility, not on behalf of any other Contributor, and only if You
++agree to indemnify, defend, and hold each Contributor harmless for any liability
++incurred by, or claims asserted against, such Contributor by reason of your
++accepting any such warranty or additional liability.
++
++END OF TERMS AND CONDITIONS
++
++APPENDIX: How to apply the Apache License to your work
++
++To apply the Apache License to your work, attach the following boilerplate
++notice, with the fields enclosed by brackets "[]" replaced with your own
++identifying information. (Don't include the brackets!) The text should be
++enclosed in the appropriate comment syntax for the file format. We also
++recommend that a file or class name and description of purpose be included on
++the same "printed page" as the copyright notice for easier identification within
++third-party archives.
++
++ Copyright [yyyy] [name of copyright owner]
++
++ Licensed under the Apache License, Version 2.0 (the "License");
++ you may not use this file except in compliance with the License.
++ You may obtain a copy of the License at
++
++ http://www.apache.org/licenses/LICENSE-2.0
++
++ Unless required by applicable law or agreed to in writing, software
++ distributed under the License is distributed on an "AS IS" BASIS,
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ See the License for the specific language governing permissions and
++ limitations under the License.
+--- /dev/null
++++ node-css-2.1.0/node_modules/atob/LICENSE.DOCS
+@@ -0,0 +1,319 @@
++Creative Commons Legal Code
++
++Attribution 3.0 Unported
++
++ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
++ LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
++ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
++ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
++ REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
++ DAMAGES RESULTING FROM ITS USE.
++
++License
++
++THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
++COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
++COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
++AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
++
++BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
++TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
++BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
++CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
++CONDITIONS.
++
++1. Definitions
++
++ a. "Adaptation" means a work based upon the Work, or upon the Work and
++ other pre-existing works, such as a translation, adaptation,
++ derivative work, arrangement of music or other alterations of a
++ literary or artistic work, or phonogram or performance and includes
++ cinematographic adaptations or any other form in which the Work may be
++ recast, transformed, or adapted including in any form recognizably
++ derived from the original, except that a work that constitutes a
++ Collection will not be considered an Adaptation for the purpose of
++ this License. For the avoidance of doubt, where the Work is a musical
++ work, performance or phonogram, the synchronization of the Work in
++ timed-relation with a moving image ("synching") will be considered an
++ Adaptation for the purpose of this License.
++ b. "Collection" means a collection of literary or artistic works, such as
++ encyclopedias and anthologies, or performances, phonograms or
++ broadcasts, or other works or subject matter other than works listed
++ in Section 1(f) below, which, by reason of the selection and
++ arrangement of their contents, constitute intellectual creations, in
++ which the Work is included in its entirety in unmodified form along
++ with one or more other contributions, each constituting separate and
++ independent works in themselves, which together are assembled into a
++ collective whole. A work that constitutes a Collection will not be
++ considered an Adaptation (as defined above) for the purposes of this
++ License.
++ c. "Distribute" means to make available to the public the original and
++ copies of the Work or Adaptation, as appropriate, through sale or
++ other transfer of ownership.
++ d. "Licensor" means the individual, individuals, entity or entities that
++ offer(s) the Work under the terms of this License.
++ e. "Original Author" means, in the case of a literary or artistic work,
++ the individual, individuals, entity or entities who created the Work
++ or if no individual or entity can be identified, the publisher; and in
++ addition (i) in the case of a performance the actors, singers,
++ musicians, dancers, and other persons who act, sing, deliver, declaim,
++ play in, interpret or otherwise perform literary or artistic works or
++ expressions of folklore; (ii) in the case of a phonogram the producer
++ being the person or legal entity who first fixes the sounds of a
++ performance or other sounds; and, (iii) in the case of broadcasts, the
++ organization that transmits the broadcast.
++ f. "Work" means the literary and/or artistic work offered under the terms
++ of this License including without limitation any production in the
++ literary, scientific and artistic domain, whatever may be the mode or
++ form of its expression including digital form, such as a book,
++ pamphlet and other writing; a lecture, address, sermon or other work
++ of the same nature; a dramatic or dramatico-musical work; a
++ choreographic work or entertainment in dumb show; a musical
++ composition with or without words; a cinematographic work to which are
++ assimilated works expressed by a process analogous to cinematography;
++ a work of drawing, painting, architecture, sculpture, engraving or
++ lithography; a photographic work to which are assimilated works
++ expressed by a process analogous to photography; a work of applied
++ art; an illustration, map, plan, sketch or three-dimensional work
++ relative to geography, topography, architecture or science; a
++ performance; a broadcast; a phonogram; a compilation of data to the
++ extent it is protected as a copyrightable work; or a work performed by
++ a variety or circus performer to the extent it is not otherwise
++ considered a literary or artistic work.
++ g. "You" means an individual or entity exercising rights under this
++ License who has not previously violated the terms of this License with
++ respect to the Work, or who has received express permission from the
++ Licensor to exercise rights under this License despite a previous
++ violation.
++ h. "Publicly Perform" means to perform public recitations of the Work and
++ to communicate to the public those public recitations, by any means or
++ process, including by wire or wireless means or public digital
++ performances; to make available to the public Works in such a way that
++ members of the public may access these Works from a place and at a
++ place individually chosen by them; to perform the Work to the public
++ by any means or process and the communication to the public of the
++ performances of the Work, including by public digital performance; to
++ broadcast and rebroadcast the Work by any means including signs,
++ sounds or images.
++ i. "Reproduce" means to make copies of the Work by any means including
++ without limitation by sound or visual recordings and the right of
++ fixation and reproducing fixations of the Work, including storage of a
++ protected performance or phonogram in digital form or other electronic
++ medium.
++
++2. Fair Dealing Rights. Nothing in this License is intended to reduce,
++limit, or restrict any uses free from copyright or rights arising from
++limitations or exceptions that are provided for in connection with the
++copyright protection under copyright law or other applicable laws.
++
++3. License Grant. Subject to the terms and conditions of this License,
++Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
++perpetual (for the duration of the applicable copyright) license to
++exercise the rights in the Work as stated below:
++
++ a. to Reproduce the Work, to incorporate the Work into one or more
++ Collections, and to Reproduce the Work as incorporated in the
++ Collections;
++ b. to create and Reproduce Adaptations provided that any such Adaptation,
++ including any translation in any medium, takes reasonable steps to
++ clearly label, demarcate or otherwise identify that changes were made
++ to the original Work. For example, a translation could be marked "The
++ original work was translated from English to Spanish," or a
++ modification could indicate "The original work has been modified.";
++ c. to Distribute and Publicly Perform the Work including as incorporated
++ in Collections; and,
++ d. to Distribute and Publicly Perform Adaptations.
++ e. For the avoidance of doubt:
++
++ i. Non-waivable Compulsory License Schemes. In those jurisdictions in
++ which the right to collect royalties through any statutory or
++ compulsory licensing scheme cannot be waived, the Licensor
++ reserves the exclusive right to collect such royalties for any
++ exercise by You of the rights granted under this License;
++ ii. Waivable Compulsory License Schemes. In those jurisdictions in
++ which the right to collect royalties through any statutory or
++ compulsory licensing scheme can be waived, the Licensor waives the
++ exclusive right to collect such royalties for any exercise by You
++ of the rights granted under this License; and,
++ iii. Voluntary License Schemes. The Licensor waives the right to
++ collect royalties, whether individually or, in the event that the
++ Licensor is a member of a collecting society that administers
++ voluntary licensing schemes, via that society, from any exercise
++ by You of the rights granted under this License.
++
++The above rights may be exercised in all media and formats whether now
++known or hereafter devised. The above rights include the right to make
++such modifications as are technically necessary to exercise the rights in
++other media and formats. Subject to Section 8(f), all rights not expressly
++granted by Licensor are hereby reserved.
++
++4. Restrictions. The license granted in Section 3 above is expressly made
++subject to and limited by the following restrictions:
++
++ a. You may Distribute or Publicly Perform the Work only under the terms
++ of this License. You must include a copy of, or the Uniform Resource
++ Identifier (URI) for, this License with every copy of the Work You
++ Distribute or Publicly Perform. You may not offer or impose any terms
++ on the Work that restrict the terms of this License or the ability of
++ the recipient of the Work to exercise the rights granted to that
++ recipient under the terms of the License. You may not sublicense the
++ Work. You must keep intact all notices that refer to this License and
++ to the disclaimer of warranties with every copy of the Work You
++ Distribute or Publicly Perform. When You Distribute or Publicly
++ Perform the Work, You may not impose any effective technological
++ measures on the Work that restrict the ability of a recipient of the
++ Work from You to exercise the rights granted to that recipient under
++ the terms of the License. This Section 4(a) applies to the Work as
++ incorporated in a Collection, but this does not require the Collection
++ apart from the Work itself to be made subject to the terms of this
++ License. If You create a Collection, upon notice from any Licensor You
++ must, to the extent practicable, remove from the Collection any credit
++ as required by Section 4(b), as requested. If You create an
++ Adaptation, upon notice from any Licensor You must, to the extent
++ practicable, remove from the Adaptation any credit as required by
++ Section 4(b), as requested.
++ b. If You Distribute, or Publicly Perform the Work or any Adaptations or
++ Collections, You must, unless a request has been made pursuant to
++ Section 4(a), keep intact all copyright notices for the Work and
++ provide, reasonable to the medium or means You are utilizing: (i) the
++ name of the Original Author (or pseudonym, if applicable) if supplied,
++ and/or if the Original Author and/or Licensor designate another party
++ or parties (e.g., a sponsor institute, publishing entity, journal) for
++ attribution ("Attribution Parties") in Licensor's copyright notice,
++ terms of service or by other reasonable means, the name of such party
++ or parties; (ii) the title of the Work if supplied; (iii) to the
++ extent reasonably practicable, the URI, if any, that Licensor
++ specifies to be associated with the Work, unless such URI does not
++ refer to the copyright notice or licensing information for the Work;
++ and (iv) , consistent with Section 3(b), in the case of an Adaptation,
++ a credit identifying the use of the Work in the Adaptation (e.g.,
++ "French translation of the Work by Original Author," or "Screenplay
++ based on original Work by Original Author"). The credit required by
++ this Section 4 (b) may be implemented in any reasonable manner;
++ provided, however, that in the case of a Adaptation or Collection, at
++ a minimum such credit will appear, if a credit for all contributing
++ authors of the Adaptation or Collection appears, then as part of these
++ credits and in a manner at least as prominent as the credits for the
++ other contributing authors. For the avoidance of doubt, You may only
++ use the credit required by this Section for the purpose of attribution
++ in the manner set out above and, by exercising Your rights under this
++ License, You may not implicitly or explicitly assert or imply any
++ connection with, sponsorship or endorsement by the Original Author,
++ Licensor and/or Attribution Parties, as appropriate, of You or Your
++ use of the Work, without the separate, express prior written
++ permission of the Original Author, Licensor and/or Attribution
++ Parties.
++ c. Except as otherwise agreed in writing by the Licensor or as may be
++ otherwise permitted by applicable law, if You Reproduce, Distribute or
++ Publicly Perform the Work either by itself or as part of any
++ Adaptations or Collections, You must not distort, mutilate, modify or
++ take other derogatory action in relation to the Work which would be
++ prejudicial to the Original Author's honor or reputation. Licensor
++ agrees that in those jurisdictions (e.g. Japan), in which any exercise
++ of the right granted in Section 3(b) of this License (the right to
++ make Adaptations) would be deemed to be a distortion, mutilation,
++ modification or other derogatory action prejudicial to the Original
++ Author's honor and reputation, the Licensor will waive or not assert,
++ as appropriate, this Section, to the fullest extent permitted by the
++ applicable national law, to enable You to reasonably exercise Your
++ right under Section 3(b) of this License (right to make Adaptations)
++ but not otherwise.
++
++5. Representations, Warranties and Disclaimer
++
++UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
++OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
++KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
++INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
++FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
++LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
++WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
++OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
++
++6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
++LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
++ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
++ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
++BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
++
++7. Termination
++
++ a. This License and the rights granted hereunder will terminate
++ automatically upon any breach by You of the terms of this License.
++ Individuals or entities who have received Adaptations or Collections
++ from You under this License, however, will not have their licenses
++ terminated provided such individuals or entities remain in full
++ compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
++ survive any termination of this License.
++ b. Subject to the above terms and conditions, the license granted here is
++ perpetual (for the duration of the applicable copyright in the Work).
++ Notwithstanding the above, Licensor reserves the right to release the
++ Work under different license terms or to stop distributing the Work at
++ any time; provided, however that any such election will not serve to
++ withdraw this License (or any other license that has been, or is
++ required to be, granted under the terms of this License), and this
++ License will continue in full force and effect unless terminated as
++ stated above.
++
++8. Miscellaneous
++
++ a. Each time You Distribute or Publicly Perform the Work or a Collection,
++ the Licensor offers to the recipient a license to the Work on the same
++ terms and conditions as the license granted to You under this License.
++ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
++ offers to the recipient a license to the original Work on the same
++ terms and conditions as the license granted to You under this License.
++ c. If any provision of this License is invalid or unenforceable under
++ applicable law, it shall not affect the validity or enforceability of
++ the remainder of the terms of this License, and without further action
++ by the parties to this agreement, such provision shall be reformed to
++ the minimum extent necessary to make such provision valid and
++ enforceable.
++ d. No term or provision of this License shall be deemed waived and no
++ breach consented to unless such waiver or consent shall be in writing
++ and signed by the party to be charged with such waiver or consent.
++ e. This License constitutes the entire agreement between the parties with
++ respect to the Work licensed here. There are no understandings,
++ agreements or representations with respect to the Work not specified
++ here. Licensor shall not be bound by any additional provisions that
++ may appear in any communication from You. This License may not be
++ modified without the mutual written agreement of the Licensor and You.
++ f. The rights granted under, and the subject matter referenced, in this
++ License were drafted utilizing the terminology of the Berne Convention
++ for the Protection of Literary and Artistic Works (as amended on
++ September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
++ Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
++ and the Universal Copyright Convention (as revised on July 24, 1971).
++ These rights and subject matter take effect in the relevant
++ jurisdiction in which the License terms are sought to be enforced
++ according to the corresponding provisions of the implementation of
++ those treaty provisions in the applicable national law. If the
++ standard suite of rights granted under applicable copyright law
++ includes additional rights not granted under this License, such
++ additional rights are deemed to be included in the License; this
++ License is not intended to restrict the license of any rights under
++ applicable law.
++
++
++Creative Commons Notice
++
++ Creative Commons is not a party to this License, and makes no warranty
++ whatsoever in connection with the Work. Creative Commons will not be
++ liable to You or any party on any legal theory for any damages
++ whatsoever, including without limitation any general, special,
++ incidental or consequential damages arising in connection to this
++ license. Notwithstanding the foregoing two (2) sentences, if Creative
++ Commons has expressly identified itself as the Licensor hereunder, it
++ shall have all rights and obligations of Licensor.
++
++ Except for the limited purpose of indicating to the public that the
++ Work is licensed under the CCPL, Creative Commons does not authorize
++ the use by either party of the trademark "Creative Commons" or any
++ related trademark or logo of Creative Commons without the prior
++ written consent of Creative Commons. Any permitted use will be in
++ compliance with Creative Commons' then-current trademark usage
++ guidelines, as may be published on its website or otherwise made
++ available upon request from time to time. For the avoidance of doubt,
++ this trademark restriction does not form part of this License.
++
++ Creative Commons may be contacted at http://creativecommons.org/.
+--- /dev/null
++++ node-css-2.1.0/node_modules/atob/README.md
+@@ -0,0 +1,28 @@
++atob
++===
++
++Uses `Buffer` to emulate the exact functionality of the browser's atob.
++
++Note: Unicode may be handled incorrectly (like the browser).
++
++It turns base64-encoded **a**scii data back **to** **b**inary.
++
++ (function () {
++ "use strict";
++
++ var atob = require('atob')
++ , b64 = "SGVsbG8gV29ybGQ="
++ , bin = atob(b64)
++ ;
++
++ console.log(bin); // "Hello World"
++ }());
++
++Copyright and license
++===
++
++Code and documentation copyright 2012-2014 AJ ONeal Tech, LLC.
++
++Code released under the [Apache license](https://github.com/node-browser-compat/atob/blob/master/LICENSE).
++
++Docs released under [Creative Commons](https://github.com/node-browser-compat/atob/blob/master/LICENSE.DOCS).
+--- /dev/null
++++ node-css-2.1.0/node_modules/atob/bin/atob.js
+@@ -0,0 +1,10 @@
++#!/usr/bin/env node
++/*jshint strict:true node:true es5:true onevar:true laxcomma:true laxbreak:true eqeqeq:true immed:true latedef:true*/
++(function () {
++ "use strict";
++
++ var atob = require('../index')
++ ;
++
++ console.log(atob(process.argv[2]));
++}());
+--- /dev/null
++++ node-css-2.1.0/node_modules/atob/index.js
+@@ -0,0 +1,9 @@
++(function () {
++ "use strict";
++
++ function atob(str) {
++ return new Buffer(str, 'base64').toString('binary');
++ }
++
++ module.exports = atob;
++}());
+--- /dev/null
++++ node-css-2.1.0/node_modules/atob/package.json
+@@ -0,0 +1,23 @@
++{
++ "name": "atob",
++ "homepage": "https://github.com/coolaj86/node-browser-compat",
++ "description": "atob for Node.JS and Linux / Mac / Windows CLI (it's a one-liner)",
++ "repository": {
++ "type": "git",
++ "url": "git://github.com/coolaj86/node-browser-compat.git"
++ },
++ "keywords": [
++ "atob",
++ "browser"
++ ],
++ "author": "AJ ONeal <coolaj86 at gmail.com> (http://coolaj86.info)",
++ "engines": {
++ "node": ">= 0.4.0"
++ },
++ "main": "index",
++ "bin": {
++ "atob": "bin/atob.js"
++ },
++ "license": "Apache2",
++ "version": "1.1.2"
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/atob/test.js
+@@ -0,0 +1,20 @@
++/*jshint strict:true node:true es5:true onevar:true laxcomma:true laxbreak:true eqeqeq:true immed:true latedef:true*/
++(function () {
++ "use strict";
++
++ var atob = require('./index')
++ , encoded = "SGVsbG8gV29ybGQ="
++ , unencoded = "Hello World"
++ /*
++ , encoded = "SGVsbG8sIBZM"
++ , unencoded = "Hello, 世界"
++ */
++ ;
++
++ if (unencoded !== atob(encoded)) {
++ console.log('[FAIL]', unencoded, atob(encoded));
++ return;
++ }
++
++ console.log('[PASS] all tests pass');
++}());
diff --git a/debian/patches/0001-bundle_urix.patch b/debian/patches/0001-bundle_urix.patch
new file mode 100644
index 0000000..6f55098
--- /dev/null
+++ b/debian/patches/0001-bundle_urix.patch
@@ -0,0 +1,229 @@
+Description: Bundle urix as patch. Too small to be packaged.
+Author: Leo Iannacone <l3on at ubuntu.com>
+Forwarded: not-needed
+Last-Update: 2014-10-12
+
+--- /dev/null
++++ node-css-2.1.0/node_modules/urix/.jshintrc
+@@ -0,0 +1,42 @@
++{
++ "bitwise": true,
++ "camelcase": true,
++ "curly": false,
++ "eqeqeq": true,
++ "es3": false,
++ "forin": true,
++ "immed": false,
++ "indent": false,
++ "latedef": "nofunc",
++ "newcap": false,
++ "noarg": true,
++ "noempty": true,
++ "nonew": false,
++ "plusplus": false,
++ "quotmark": true,
++ "undef": true,
++ "unused": "vars",
++ "strict": false,
++ "trailing": true,
++ "maxparams": 5,
++ "maxdepth": false,
++ "maxstatements": false,
++ "maxcomplexity": false,
++ "maxlen": 100,
++
++ "asi": true,
++ "expr": true,
++ "globalstrict": true,
++ "smarttabs": true,
++ "sub": true,
++
++ "node": true,
++ "globals": {
++ "describe": false,
++ "it": false,
++ "before": false,
++ "beforeEach": false,
++ "after": false,
++ "afterEach": false
++ }
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/urix/.npmignore
+@@ -0,0 +1,4 @@
++example
++.*
++!.jshintrc
++*.sublime-*
+--- /dev/null
++++ node-css-2.1.0/node_modules/urix/.travis.yml
+@@ -0,0 +1,4 @@
++language: node_js
++node_js:
++ - "0.11"
++ - "0.10"
+--- /dev/null
++++ node-css-2.1.0/node_modules/urix/LICENSE
+@@ -0,0 +1,21 @@
++The MIT License (MIT)
++
++Copyright (c) 2013 Simon Lydell
++
++Permission is hereby granted, free of charge, to any person obtaining a copy
++of this software and associated documentation files (the "Software"), to deal
++in the Software without restriction, including without limitation the rights
++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++copies of the Software, and to permit persons to whom the Software is
++furnished to do so, subject to the following conditions:
++
++The above copyright notice and this permission notice shall be included in
++all copies or substantial portions of the Software.
++
++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++THE SOFTWARE.
+--- /dev/null
++++ node-css-2.1.0/node_modules/urix/index.js
+@@ -0,0 +1,17 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++var path = require("path")
++
++"use strict"
++
++function urix(aPath) {
++ if (path.sep === "\\") {
++ return aPath
++ .replace(/\\/g, "/")
++ .replace(/^[a-z]:\/?/i, "/")
++ }
++ return aPath
++}
++
++module.exports = urix
+--- /dev/null
++++ node-css-2.1.0/node_modules/urix/package.json
+@@ -0,0 +1,25 @@
++{
++ "name": "urix",
++ "version": "0.1.0",
++ "author": "Simon Lydell",
++ "license": "MIT",
++ "description": "Makes Windows-style paths more unix and URI friendly.",
++ "main": "index.js",
++ "repository": "lydell/urix",
++ "keywords": [
++ "path",
++ "url",
++ "uri",
++ "unix",
++ "windows",
++ "backslash",
++ "slash"
++ ],
++ "scripts": {
++ "test": "jshint index.js test/ && mocha"
++ },
++ "devDependencies": {
++ "mocha": "^1.17.1",
++ "jshint": "^2.4.4"
++ }
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/urix/readme.md
+@@ -0,0 +1,44 @@
++Overview [![Build Status](https://travis-ci.org/lydell/urix.png?branch=master)](https://travis-ci.org/lydell/urix)
++========
++
++Makes Windows-style paths more unix and URI friendly. Useful if you work with
++paths that eventually will be used in URLs.
++
++```js
++var urix = require("urix")
++
++// On Windows:
++urix("c:\\users\\you\\foo")
++// /users/you/foo
++
++// On unix-like systems:
++urix("c:\\users\\you\\foo")
++// c:\users\you\foo
++```
++
++
++Installation
++============
++
++`npm install urix`
++
++```js
++var urix = require("urix")
++```
++
++
++Usage
++=====
++
++### `urix(path)` ###
++
++On Windows, replaces all backslashes with slashes and uses a slash instead of a
++drive letter and a colon for absolute paths.
++
++On unix-like systems it is a no-op.
++
++
++License
++=======
++
++[The X11 (“MIT”) License](LICENSE).
+--- /dev/null
++++ node-css-2.1.0/node_modules/urix/test/index.js
+@@ -0,0 +1,43 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++var path = require("path")
++var assert = require("assert")
++var urix = require("../")
++
++"use stict"
++
++function test(testPath, expected) {
++ path.sep = "\\"
++ assert.equal(urix(testPath), expected)
++ path.sep = "/"
++ assert.equal(urix(testPath), testPath)
++}
++
++describe("urix", function() {
++
++ it("is a function", function() {
++ assert.equal(typeof urix, "function")
++ })
++
++
++ it("converts backslashes to slashes", function() {
++ test("a\\b\\c", "a/b/c")
++ test("\\a\\b\\c", "/a/b/c")
++ test("a/b\\c", "a/b/c")
++ test("\\\\a\\\\\\b///c", "//a///b///c")
++ })
++
++
++ it("changes the drive letter to a slash", function() {
++ test("c:\\a", "/a")
++ test("C:\\a", "/a")
++ test("z:\\a", "/a")
++ test("c:a", "/a")
++ test("c:/a", "/a")
++ test("c:\\\\a", "//a")
++ test("c://a", "//a")
++ test("c:\\//a", "///a")
++ })
++
++})
diff --git a/debian/patches/0002-bundle_resolve-url.patch b/debian/patches/0002-bundle_resolve-url.patch
new file mode 100644
index 0000000..3b60e06
--- /dev/null
+++ b/debian/patches/0002-bundle_resolve-url.patch
@@ -0,0 +1,382 @@
+Description: Bundle resolve-url as patch.
+ It is used only in this context.
+Author: Leo Iannacone <l3on at ubuntu.com>
+Forwarded: not-needed
+Last-Update: 2014-10-12
+
+--- /dev/null
++++ node-css-2.1.0/node_modules/resolve-url/.jshintrc
+@@ -0,0 +1,44 @@
++{
++ "bitwise": true,
++ "camelcase": true,
++ "curly": false,
++ "eqeqeq": true,
++ "es3": true,
++ "forin": true,
++ "immed": false,
++ "indent": false,
++ "latedef": "nofunc",
++ "newcap": false,
++ "noarg": true,
++ "noempty": true,
++ "nonew": false,
++ "plusplus": false,
++ "quotmark": false,
++ "undef": true,
++ "unused": "vars",
++ "strict": false,
++ "trailing": true,
++ "maxparams": 5,
++ "maxdepth": false,
++ "maxstatements": false,
++ "maxcomplexity": false,
++ "maxlen": 100,
++
++ "asi": true,
++ "expr": true,
++ "globalstrict": true,
++ "smarttabs": true,
++ "sub": true,
++
++ "node": true,
++ "browser": true,
++ "globals": {
++ "describe": false,
++ "it": false,
++ "before": false,
++ "beforeEach": false,
++ "after": false,
++ "afterEach": false,
++ "define": false
++ }
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/resolve-url/.npmignore
+@@ -0,0 +1,2 @@
++.*
++!.jshintrc
+--- /dev/null
++++ node-css-2.1.0/node_modules/resolve-url/LICENSE
+@@ -0,0 +1,21 @@
++The MIT License (MIT)
++
++Copyright (c) 2013 Simon Lydell
++
++Permission is hereby granted, free of charge, to any person obtaining a copy
++of this software and associated documentation files (the "Software"), to deal
++in the Software without restriction, including without limitation the rights
++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++copies of the Software, and to permit persons to whom the Software is
++furnished to do so, subject to the following conditions:
++
++The above copyright notice and this permission notice shall be included in
++all copies or substantial portions of the Software.
++
++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++THE SOFTWARE.
+--- /dev/null
++++ node-css-2.1.0/node_modules/resolve-url/bower.json
+@@ -0,0 +1,15 @@
++{
++ "name": "resolve-url",
++ "version": "0.2.1",
++ "description": "Like Node.js’ `path.resolve`/`url.resolve` for the browser.",
++ "authors": ["Simon Lydell"],
++ "license": "MIT",
++ "main": "resolve-url.js",
++ "keywords": [
++ "resolve",
++ "url"
++ ],
++ "ignore": [
++ ".*"
++ ]
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/resolve-url/changelog.md
+@@ -0,0 +1,15 @@
++### Version 0.2.1 (2014-02-25) ###
++
++- Fix edge case when (accidentally) supplying only one argument, and that
++ argument happens to be a falsy value such as `undefined` or `null`.
++
++
++### Version 0.2.0 (2014-02-24) ###
++
++- Disallow passing 0 arguments. It’s weird and inconsistent between browsers.
++ (Backwards incompatible change.)
++
++
++### Version 0.1.0 (2014-02-23) ###
++
++- Initial release.
+--- /dev/null
++++ node-css-2.1.0/node_modules/resolve-url/component.json
+@@ -0,0 +1,15 @@
++{
++ "name": "resolve-url",
++ "version": "0.2.1",
++ "license": "MIT",
++ "description": "Like Node.js’ `path.resolve`/`url.resolve` for the browser.",
++ "main": "resolve-url.js",
++ "repo": "lydell/resolve-url",
++ "keywords": [
++ "resolve",
++ "url"
++ ],
++ "scripts": [
++ "resolve-url.js"
++ ]
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/resolve-url/package.json
+@@ -0,0 +1,34 @@
++{
++ "name": "resolve-url",
++ "version": "0.2.1",
++ "description": "Like Node.js’ `path.resolve`/`url.resolve` for the browser.",
++ "author": "Simon Lydell",
++ "license": "MIT",
++ "main": "resolve-url.js",
++ "repository": "lydell/resolve-url",
++ "keywords": [
++ "resolve",
++ "url"
++ ],
++ "scripts": {
++ "test": "jshint resolve-url.js test/ && testling -u"
++ },
++ "devDependencies": {
++ "testling": "~1.6.0",
++ "jshint": "~2.4.3",
++ "tape": "~2.5.0"
++ },
++ "testling": {
++ "files": "test/*.js",
++ "browsers": [
++ "ie/8..latest",
++ "chrome/latest",
++ "firefox/latest",
++ "opera/12",
++ "opera/latest",
++ "safari/5",
++ "iphone/6",
++ "android-browser/4"
++ ]
++ }
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/resolve-url/readme.md
+@@ -0,0 +1,83 @@
++Overview
++========
++
++[![browser support](https://ci.testling.com/lydell/resolve-url.png)](https://ci.testling.com/lydell/resolve-url)
++
++Like Node.js’ [`path.resolve`]/[`url.resolve`] for the browser.
++
++```js
++var resolveUrl = require("resolve-url")
++
++window.location
++// https://example.com/articles/resolving-urls/edit
++
++resolveUrl("remove")
++// https://example.com/articles/resolving-urls/remove
++
++resolveUrl("/static/scripts/app.js")
++// https://example.com/static/scripts/app.js
++
++// Imagine /static/scripts/app.js contains `//# sourceMappingURL=../source-maps/app.js.map`
++resolveUrl("/static/scripts/app.js", "../source-maps/app.js.map")
++// https://example.com/static/source-maps/app.js.map
++
++resolveUrl("/static/scripts/app.js", "../source-maps/app.js.map", "../coffee/app.coffee")
++// https://example.com/static/coffee/app.coffee
++
++resolveUrl("//cdn.example.com/jquery.js")
++// https://cdn.example.com/jquery.js
++
++resolveUrl("http://foo.org/")
++// http://foo.org/
++```
++
++
++Installation
++============
++
++- `npm install resolve-url`
++- `bower install resolve-url`
++- `component install lydell/resolve-url`
++
++Works with CommonJS, AMD and browser globals, through UMD.
++
++
++Usage
++=====
++
++### `resolveUrl(...urls)` ###
++
++Pass one or more urls. Resolves the last one to an absolute url, using the
++previous ones and `window.location`.
++
++It’s like starting out on `window.location`, and then clicking links with the
++urls as `href` attributes in order, from left to right.
++
++Unlike Node.js’ [`path.resolve`], this function always goes through all of the
++arguments, from left to right. `path.resolve` goes from right to left and only
++in the worst case goes through them all. Should that matter.
++
++Actually, the function is _really_ like clicking a lot of links in series: An
++actual `<a>` gets its `href` attribute set for each url! This means that the
++url resolution of the browser is used, which makes this module really
++light-weight.
++
++Also note that this functions deals with urls, not paths, so in that respect it
++has more in common with Node.js’ [`url.resolve`]. But the arguments are more
++like [`path.resolve`].
++
++[`path.resolve`]: http://nodejs.org/api/path.html#path_path_resolve_from_to
++[`url.resolve`]: http://nodejs.org/api/url.html#url_url_resolve_from_to
++
++
++Tests
++=====
++
++Run `npm test`, which lints the code and then gives you a link to open in a
++browser of choice (using `testling`).
++
++
++License
++=======
++
++[The X11 (“MIT”) License](LICENSE).
+--- /dev/null
++++ node-css-2.1.0/node_modules/resolve-url/resolve-url.js
+@@ -0,0 +1,47 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++void (function(root, factory) {
++ if (typeof define === "function" && define.amd) {
++ define(factory)
++ } else if (typeof exports === "object") {
++ module.exports = factory()
++ } else {
++ root.resolveUrl = factory()
++ }
++}(this, function() {
++
++ function resolveUrl(/* ...urls */) {
++ var numUrls = arguments.length
++
++ if (numUrls === 0) {
++ throw new Error("resolveUrl requires at least one argument; got none.")
++ }
++
++ var base = document.createElement("base")
++ base.href = arguments[0]
++
++ if (numUrls === 1) {
++ return base.href
++ }
++
++ var head = document.getElementsByTagName("head")[0]
++ head.insertBefore(base, head.firstChild)
++
++ var a = document.createElement("a")
++ var resolved
++
++ for (var index = 1; index < numUrls; index++) {
++ a.href = arguments[index]
++ resolved = a.href
++ base.href = resolved
++ }
++
++ head.removeChild(base)
++
++ return resolved
++ }
++
++ return resolveUrl
++
++}));
+--- /dev/null
++++ node-css-2.1.0/node_modules/resolve-url/test/resolve-url.js
+@@ -0,0 +1,70 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++var test = require("tape")
++
++var resolveUrl = require("../")
++
++"use strict"
++
++test("resolveUrl", function(t) {
++
++ t.plan(7)
++
++ t.equal(typeof resolveUrl, "function", "is a function")
++
++ t.equal(
++ resolveUrl("https://example.com/"),
++ "https://example.com/"
++ )
++
++ var loc = "https://example.com/articles/resolving-urls/edit"
++
++ t.equal(
++ resolveUrl(loc, "remove"),
++ "https://example.com/articles/resolving-urls/remove"
++ )
++
++ t.equal(
++ resolveUrl(loc, "/static/scripts/app.js"),
++ "https://example.com/static/scripts/app.js"
++ )
++
++ t.equal(
++ resolveUrl(loc, "/static/scripts/app.js", "../source-maps/app.js.map"),
++ "https://example.com/static/source-maps/app.js.map"
++ )
++
++ t.equal(
++ resolveUrl(loc, "/static/scripts/app.js", "../source-maps/app.js.map", "../coffee/app.coffee"),
++ "https://example.com/static/coffee/app.coffee"
++ )
++
++ t.equal(
++ resolveUrl(loc, "//cdn.example.com/jquery.js"),
++ "https://cdn.example.com/jquery.js"
++ )
++
++})
++
++test("edge cases", function(t) {
++
++ t.plan(4)
++
++ t["throws"](resolveUrl, /at least one argument/, "throws with no arguments")
++
++ var accidentallyUndefined
++ var result
++ t.doesNotThrow(
++ function() { result = resolveUrl(accidentallyUndefined) },
++ "undefined is still an argument"
++ )
++ t.ok(result.match(/\/undefined$/), "undefined is stringified")
++
++ t.equal(
++ resolveUrl("http://foo.org/test", undefined, {}, ["a/b"], null),
++ "http://foo.org/a/null",
++ "arguments are stringified"
++ )
++
++})
diff --git a/debian/patches/0003-bundle_source-map-url.patch b/debian/patches/0003-bundle_source-map-url.patch
new file mode 100644
index 0000000..6aaa269
--- /dev/null
+++ b/debian/patches/0003-bundle_source-map-url.patch
@@ -0,0 +1,764 @@
+Description: Description: source-map-url as patch.
+ It is used only in this context.
+Author: Leo Iannacone <l3on at ubuntu.com>
+Forwarded: not-needed
+Last-Update: 2014-10-12
+
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/.jshintrc
+@@ -0,0 +1,43 @@
++{
++ "bitwise": true,
++ "camelcase": true,
++ "curly": false,
++ "eqeqeq": true,
++ "es3": true,
++ "forin": true,
++ "immed": false,
++ "indent": false,
++ "latedef": "nofunc",
++ "newcap": false,
++ "noarg": true,
++ "noempty": true,
++ "nonew": false,
++ "plusplus": false,
++ "quotmark": false,
++ "undef": true,
++ "unused": "vars",
++ "strict": false,
++ "trailing": true,
++ "maxparams": 5,
++ "maxdepth": false,
++ "maxstatements": false,
++ "maxcomplexity": false,
++ "maxlen": 100,
++
++ "asi": true,
++ "expr": true,
++ "globalstrict": true,
++ "smarttabs": true,
++ "sub": true,
++
++ "node": true,
++ "globals": {
++ "describe": false,
++ "it": false,
++ "before": false,
++ "beforeEach": false,
++ "after": false,
++ "afterEach": false,
++ "define": false
++ }
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/.npmignore
+@@ -0,0 +1,2 @@
++.*
++!.jshintrc
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/.travis.yml
+@@ -0,0 +1,4 @@
++language: node_js
++node_js:
++ - "0.11"
++ - "0.10"
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/LICENSE
+@@ -0,0 +1,21 @@
++The MIT License (MIT)
++
++Copyright (c) 2014 Simon Lydell
++
++Permission is hereby granted, free of charge, to any person obtaining a copy
++of this software and associated documentation files (the "Software"), to deal
++in the Software without restriction, including without limitation the rights
++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++copies of the Software, and to permit persons to whom the Software is
++furnished to do so, subject to the following conditions:
++
++The above copyright notice and this permission notice shall be included in
++all copies or substantial portions of the Software.
++
++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++THE SOFTWARE.
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/bower.json
+@@ -0,0 +1,20 @@
++{
++ "name": "source-map-url",
++ "version": "0.3.0",
++ "author": "Simon Lydell",
++ "license": "MIT",
++ "description": "Tools for working with sourceMappingURL comments.",
++ "keywords": [
++ "source map",
++ "sourceMappingURL",
++ "comment",
++ "annotation"
++ ],
++ "main": "source-map-url.js",
++ "authors": [
++ "Simon Lydell"
++ ],
++ "ignore": [
++ ".*"
++ ]
++}
+\ No newline at end of file
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/changelog.md
+@@ -0,0 +1,42 @@
++### Version 0.3.0 (2014-08-16) ###
++
++- Changed: sourceMappingURL comments used to be matched only if they appeared
++ on their own line. However, the spec only says:
++
++ > The generated code may include a line at the end of the source, with the following form:
++ >
++ > //# sourceMappingURL=<url>
++
++ So now they are matched also when they appear on the same line as code.
++
++- Removed: The `.set()` method. I couldn’t decide how it should work
++ considering the above change. Moreover, it was unnecessarily complex (and
++ would have gotten worse) for very little gain. It is much easier to run
++ `.remove()` if needed, and then simply `code += "\n//# sourceMappingURL=" +
++ url` (using the appropriate comment syntax and newline). KISS.
++
++- Changed: The `.insertBefore()` method now always inserts the string exactly
++ before the sourceMappingURL comment; not before the newline before the
++ comment (if any). Moreover, it does not ensure that the comment will be on a
++ new line anymore. This is up to the caller. KISS.
++
++- Changed: The `.remove()` method no longer removes the newline before the
++ sourceMappingURL (if any).
++
++- Changed: Renamed `.get()` to `.getFrom()`.
++- Changed: Renamed `.remove()` to `.removeFrom()`.
++
++- Added: The `.existsIn()` method.
++
++
++### Version 0.2.0 (2014-02-23) ###
++
++- Changed: A space is no longer inserted before the closing comment syntax. If
++ such a space is desired, it needs to be put in the closing comment syntax
++ itself (such as `["/*", " */"]` instead of `["/*", "*/"]`). (Backwards
++ incompatible change.)
++
++
++### Version 0.1.0 (2014-02-22) ###
++
++- Initial release.
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/component.json
+@@ -0,0 +1,18 @@
++{
++ "name": "source-map-url",
++ "version": "0.3.0",
++ "author": "Simon Lydell",
++ "license": "MIT",
++ "description": "Tools for working with sourceMappingURL comments.",
++ "keywords": [
++ "source map",
++ "sourceMappingURL",
++ "comment",
++ "annotation"
++ ],
++ "main": "source-map-url.js",
++ "repo": "lydell/source-map-url",
++ "scripts": [
++ "source-map-url.js"
++ ]
++}
+\ No newline at end of file
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/package.json
+@@ -0,0 +1,39 @@
++{
++ "name": "source-map-url",
++ "version": "0.3.0",
++ "author": "Simon Lydell",
++ "license": "MIT",
++ "description": "Tools for working with sourceMappingURL comments.",
++ "keywords": [
++ "source map",
++ "sourceMappingURL",
++ "comment",
++ "annotation"
++ ],
++ "main": "source-map-url.js",
++ "repository": "lydell/source-map-url",
++ "scripts": {
++ "lint": "jshint source-map-url.js test/ ",
++ "unit": "mocha",
++ "test": "npm run lint && npm run unit"
++ },
++ "devDependencies": {
++ "mocha": "~1.17.1",
++ "expect.js": "~0.3.1",
++ "jshint": "~2.4.3"
++ },
++ "testling": {
++ "harness": "mocha",
++ "files": "test/*.js",
++ "browsers": [
++ "ie/8..latest",
++ "chrome/latest",
++ "firefox/latest",
++ "opera/12",
++ "opera/latest",
++ "safari/5",
++ "iphone/6",
++ "android-browser/4"
++ ]
++ }
++}
+\ No newline at end of file
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/readme.md
+@@ -0,0 +1,97 @@
++Overview [![Build Status](https://travis-ci.org/lydell/source-map-url.png?branch=master)](https://travis-ci.org/lydell/source-map-url)
++========
++
++[![browser support](https://ci.testling.com/lydell/source-map-url.png)](https://ci.testling.com/lydell/source-map-url)
++
++Tools for working with sourceMappingURL comments.
++
++```js
++var sourceMappingURL = require("source-map-url")
++
++var code = [
++ "!function(){...}();",
++ "/*# sourceMappingURL=foo.js.map */"
++].join("\n")
++
++sourceMappingURL.existsIn(code)
++// true
++
++sourceMappingURL.getFrom(code)
++// foo.js.map
++
++code = sourceMappingURL.insertBefore(code, "// License: MIT\n")
++// !function(){...}();
++// // License: MIT
++// /*# sourceMappingURL=foo.js.map */
++
++code = sourceMappingURL.removeFrom(code)
++// !function(){...}();
++// // License: MIT
++
++sourceMappingURL.existsIn(code)
++// false
++
++sourceMappingURL.getFrom(code)
++// null
++
++code += "//# sourceMappingURL=/other/file.js.map"
++// !function(){...}();
++// // License: MIT
++// //# sourceMappingURL=/other/file.js.map
++```
++
++
++Installation
++============
++
++- `npm install source-map-url`
++- `bower install source-map-url`
++- `component install lydell/source-map-url`
++
++Works with CommonJS, AMD and browser globals, through UMD.
++
++
++Usage
++=====
++
++### `sourceMappingURL.getFrom(code)` ###
++
++Returns the url of the sourceMappingURL comment in `code`. Returns `null` if
++there is no such comment.
++
++### `sourceMappingURL.existsIn(code)` ###
++
++Returns `true` if there is a sourceMappingURL comment in `code`, or `false`
++otherwise.
++
++### `sourceMappingURL.removeFrom(code)` ###
++
++Removes the sourceMappingURL comment in `code`. Does nothing if there is no
++such comment. Returns the updated `code`.
++
++### `sourceMappingURL.insertBefore(code, string)` ###
++
++Inserts `string` before the sourceMappingURL comment in `code`. Appends
++`string` to `code` if there is no such comment.
++
++Lets you append something to a file without worrying about breaking the
++sourceMappingURL comment (which needs to be at the end of the file).
++
++### `sourceMappingURL.regex` ###
++
++The regex that is used to match sourceMappingURL comments. It matches both `//`
++and `/**/` comments, thus supporting both JavaScript and CSS.
++
++
++Tests
++=====
++
++Start by running `npm test`, which lints the code and runs the test suite in Node.js.
++
++To run the tests in a browser, run `testling` (`npm install -g testling`) or `testling -u`.
++
++
++License
++=======
++
++[The X11 (“MIT”) License](LICENSE).
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/source-map-url.js
+@@ -0,0 +1,57 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++void (function(root, factory) {
++ if (typeof define === "function" && define.amd) {
++ define(factory)
++ } else if (typeof exports === "object") {
++ module.exports = factory()
++ } else {
++ root.sourceMappingURL = factory()
++ }
++}(this, function() {
++
++ var innerRegex = /[#@] sourceMappingURL=([^\s'"]*)/
++
++ var regex = RegExp(
++ "(?:" +
++ "/\\*" +
++ "(?:\\s*\r?\n(?://)?)?" +
++ "(?:" + innerRegex.source + ")" +
++ "\\s*" +
++ "\\*/" +
++ "|" +
++ "//(?:" + innerRegex.source + ")" +
++ ")" +
++ "\\s*$"
++ )
++
++ return {
++
++ regex: regex,
++ _innerRegex: innerRegex,
++
++ getFrom: function(code) {
++ var match = code.match(regex)
++ return (match ? match[1] || match[2] || "" : null)
++ },
++
++ existsIn: function(code) {
++ return regex.test(code)
++ },
++
++ removeFrom: function(code) {
++ return code.replace(regex, "")
++ },
++
++ insertBefore: function(code, string) {
++ var match = code.match(regex)
++ if (match) {
++ return code.slice(0, match.index) + string + code.slice(match.index)
++ } else {
++ return code + string
++ }
++ }
++ }
++
++}));
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/test/source-map-url.js
+@@ -0,0 +1,321 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++var expect = require("expect.js")
++
++var sourceMappingURL = require("../")
++
++var comments = {
++
++ universal: [
++ "/*# sourceMappingURL=foo.js.map */"
++ ],
++
++ js: [
++ "//# sourceMappingURL=foo.js.map"
++ ],
++
++ block: [
++ "/*",
++ "# sourceMappingURL=foo.js.map",
++ "*/"
++ ],
++
++ mix: [
++ "/*",
++ "//# sourceMappingURL=foo.js.map",
++ "*/"
++ ]
++
++}
++
++function forEachComment(fn) {
++ forOf(comments, function(name, comment) {
++ var description = "the '" + name + "' syntax with "
++ fn(comment.join("\n"), description + "regular newlines")
++ fn(comment.join("\r\n"), description + "Windows newlines")
++ })
++}
++
++function forOf(obj, fn) {
++ for (var key in obj) {
++ if (Object.prototype.hasOwnProperty.call(obj, key)) {
++ fn(key, obj[key])
++ }
++ }
++}
++
++
++describe("sourceMappingURL", function() {
++
++ describe(".getFrom", function() {
++
++ forEachComment(function(comment, description) {
++
++ it("gets the url from " + description, function() {
++ expect(sourceMappingURL.getFrom("code\n" + comment))
++ .to.equal("foo.js.map")
++
++ expect(sourceMappingURL.getFrom("code" + comment))
++ .to.equal("foo.js.map")
++
++ expect(sourceMappingURL.getFrom(comment))
++ .to.equal("foo.js.map")
++ })
++
++ })
++
++
++ it("returns null if no comment", function() {
++ expect(sourceMappingURL.getFrom("code"))
++ .to.equal(null)
++ })
++
++
++ it("can return an empty string as url", function() {
++ expect(sourceMappingURL.getFrom("/*# sourceMappingURL= */"))
++ .to.equal("")
++ })
++
++
++ it("is detachable", function() {
++ var get = sourceMappingURL.getFrom
++ expect(get("/*# sourceMappingURL=foo */"))
++ .to.equal("foo")
++ })
++
++ })
++
++
++ describe(".existsIn", function() {
++
++ forEachComment(function(comment, description) {
++
++ it("returns true for " + description, function() {
++ expect(sourceMappingURL.existsIn("code\n" + comment))
++ .to.equal(true)
++
++ expect(sourceMappingURL.existsIn("code" + comment))
++ .to.equal(true)
++
++ expect(sourceMappingURL.existsIn(comment))
++ .to.equal(true)
++ })
++
++ })
++
++
++ it("returns false if no comment", function() {
++ expect(sourceMappingURL.existsIn("code"))
++ .to.equal(false)
++ })
++
++
++ it("is detachable", function() {
++ var has = sourceMappingURL.existsIn
++ expect(has("/*# sourceMappingURL=foo */"))
++ .to.equal(true)
++ })
++
++ })
++
++
++ describe(".removeFrom", function() {
++
++ forEachComment(function(comment, description) {
++
++ it("removes the comment for " + description, function() {
++ expect(sourceMappingURL.removeFrom("code\n" + comment))
++ .to.equal("code\n")
++
++ expect(sourceMappingURL.removeFrom("code" + comment))
++ .to.equal("code")
++
++ expect(sourceMappingURL.removeFrom(comment))
++ .to.equal("")
++ })
++
++ })
++
++
++ it("does nothing if no comment", function() {
++ expect(sourceMappingURL.removeFrom("code\n"))
++ .to.equal("code\n")
++ })
++
++
++ it("is detachable", function() {
++ var remove = sourceMappingURL.removeFrom
++ expect(remove("/*# sourceMappingURL=foo */"))
++ .to.equal("")
++ })
++
++ })
++
++
++ describe(".insertBefore", function() {
++
++ forEachComment(function(comment, description) {
++
++ it("inserts a string before the comment for " + description, function() {
++ expect(sourceMappingURL.insertBefore("code\n" + comment, "more code\n"))
++ .to.equal("code\nmore code\n" + comment)
++
++ expect(sourceMappingURL.insertBefore("code" + comment, "\nmore code"))
++ .to.equal("code\nmore code" + comment)
++
++ expect(sourceMappingURL.insertBefore(comment, "some code"))
++ .to.equal("some code" + comment)
++ })
++
++ })
++
++
++ it("appends if no comment", function() {
++ expect(sourceMappingURL.insertBefore("code", "\nmore code"))
++ .to.equal("code\nmore code")
++ })
++
++
++ it("is detachable", function() {
++ var insertBefore = sourceMappingURL.insertBefore
++ expect(insertBefore("/*# sourceMappingURL=foo */", "bar"))
++ .to.equal("bar/*# sourceMappingURL=foo */")
++ })
++
++ })
++
++
++ describe(".regex", function() {
++
++ it("includes ._innerRegex", function() {
++ expect(sourceMappingURL.regex.source)
++ .to.contain(sourceMappingURL._innerRegex.source)
++ })
++
++
++ var match = function(code) {
++ expect(code)
++ .to.match(sourceMappingURL.regex)
++ }
++
++ var noMatch = function(code) {
++ expect(code)
++ .not.to.match(sourceMappingURL.regex)
++ }
++
++
++ forEachComment(function(comment, description) {
++
++ it("matches " + description, function() {
++ match("code\n" + comment)
++ match("code" + comment)
++ match(comment)
++ })
++
++
++ it("matches " + description + ", with trailing whitespace", function() {
++ match(comment + " ")
++ match(comment + "\n")
++ match(comment + "\n\n\t\n \t ")
++ })
++
++
++ it("only matches " + description + " at the end of files", function() {
++ noMatch("code\n" + comment + " code")
++ noMatch("code" + comment + " code")
++ noMatch("code\n" + comment + "\ncode")
++ noMatch("code" + comment + "\ncode")
++ noMatch("code\n" + comment + "\n// Generated by foobar")
++ noMatch("code" + comment + "\n// Generated by foobar")
++ noMatch("alert\n('\\" + comment + "')")
++ noMatch("alert('\\" + comment + "')")
++ noMatch('alert\n("\\' + comment + '")')
++ noMatch('alert("\\' + comment + '")')
++ })
++
++ })
++
++
++ it("does not match some cases that are easy to mess up", function() {
++ noMatch(
++ "/* # sourceMappingURL=foo */"
++ )
++
++ noMatch(
++ "/*\n" +
++ " //# sourceMappingURL=foo\n" +
++ "*/"
++ )
++
++ noMatch(
++ "/*//# sourceMappingURL=foo\n" +
++ "*/"
++ )
++
++ noMatch(
++ "// # sourceMappingURL=foo"
++ )
++ })
++
++
++ it("is liberal regarding inner whitespace", function() {
++ match(
++ "/*# sourceMappingURL=foo*/"
++ )
++
++ match(
++ "/*# sourceMappingURL=foo */"
++ )
++
++ match(
++ "/*# sourceMappingURL=foo \t\n" +
++ "*/"
++ )
++
++ match(
++ "/* \n" +
++ "# sourceMappingURL=foo\n" +
++ "*/"
++ )
++
++ match(
++ "/*\n" +
++ "# sourceMappingURL=foo\n" +
++ " */"
++ )
++
++ match(
++ "/*\n" +
++ "# sourceMappingURL=foo\n" +
++ "\n" +
++ "\t\n" +
++ "*/"
++ )
++ })
++
++ })
++
++
++ describe("._innerRegex", function() {
++
++ it("matches the contents of sourceMappingURL comments", function() {
++ expect("# sourceMappingURL=http://www.example.com/foo/bar.js.map")
++ .to.match(sourceMappingURL._innerRegex)
++ })
++
++
++ it("captures the url in the first capture group", function() {
++ expect(sourceMappingURL._innerRegex.exec("# sourceMappingURL=foo")[1])
++ .to.equal("foo")
++ })
++
++
++ it("supports the legacy syntax", function() {
++ expect("@ sourceMappingURL=http://www.example.com/foo/bar.js.map")
++ .to.match(sourceMappingURL._innerRegex)
++ })
++
++ })
++
++})
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-url/x-package.json5
+@@ -0,0 +1,55 @@
++{
++ name: "source-map-url",
++ version: "0.3.0",
++ author: "Simon Lydell",
++ license: "MIT",
++ description: "Tools for working with sourceMappingURL comments.",
++ keywords: [
++ "source map",
++ "sourceMappingURL",
++ "comment",
++ "annotation"
++ ],
++ main: "source-map-url.js",
++ overlay: {
++ npm: {
++ repository: "lydell/source-map-url",
++ scripts: {
++ lint: "jshint source-map-url.js test/ ",
++ unit: "mocha",
++ test: "npm run lint && npm run unit"
++ },
++ devDependencies: {
++ "mocha": "~1.17.1",
++ "expect.js": "~0.3.1",
++ "jshint": "~2.4.3"
++ },
++ testling: {
++ harness: "mocha",
++ files: "test/*.js",
++ browsers: [
++ "ie/8..latest",
++ "chrome/latest",
++ "firefox/latest",
++ "opera/12",
++ "opera/latest",
++ "safari/5",
++ "iphone/6",
++ "android-browser/4"
++ ]
++ }
++ },
++ component: {
++ repo: "lydell/source-map-url",
++ scripts: [
++ "source-map-url.js"
++ ]
++ },
++ bower: {
++ authors: ["Simon Lydell"],
++ ignore: [
++ ".*"
++ ]
++ }
++ }
++}
diff --git a/debian/patches/0004-bundle_source-map-resolve.patch b/debian/patches/0004-bundle_source-map-resolve.patch
new file mode 100644
index 0000000..bef84fd
--- /dev/null
+++ b/debian/patches/0004-bundle_source-map-resolve.patch
@@ -0,0 +1,2109 @@
+Description: Description: source-map-resolve as patch.
+ It is used only in this context.
+Author: Leo Iannacone <l3on at ubuntu.com>
+Forwarded: not-needed
+Last-Update: 2014-10-12
+
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/.jshintrc
+@@ -0,0 +1,45 @@
++{
++ "bitwise": true,
++ "camelcase": true,
++ "curly": false,
++ "eqeqeq": true,
++ "es3": true,
++ "forin": true,
++ "immed": false,
++ "indent": false,
++ "latedef": "nofunc",
++ "newcap": false,
++ "noarg": true,
++ "noempty": true,
++ "nonew": false,
++ "plusplus": false,
++ "quotmark": false,
++ "undef": true,
++ "unused": "vars",
++ "strict": false,
++ "trailing": true,
++ "maxparams": 5,
++ "maxdepth": false,
++ "maxstatements": false,
++ "maxcomplexity": false,
++ "maxlen": 100,
++
++ "asi": true,
++ "expr": true,
++ "globalstrict": true,
++ "smarttabs": true,
++ "sub": true,
++
++ "node": true,
++ "globals": {
++ "describe": false,
++ "it": false,
++ "before": false,
++ "beforeEach": false,
++ "after": false,
++ "afterEach": false,
++ "define": false,
++ "window": false,
++ "atob": true
++ }
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/.npmignore
+@@ -0,0 +1,2 @@
++.*
++!.jshintrc
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/.travis.yml
+@@ -0,0 +1,4 @@
++language: node_js
++node_js:
++ - "0.11"
++ - "0.10"
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/LICENSE
+@@ -0,0 +1,21 @@
++The MIT License (MIT)
++
++Copyright (c) 2014 Simon Lydell
++
++Permission is hereby granted, free of charge, to any person obtaining a copy
++of this software and associated documentation files (the "Software"), to deal
++in the Software without restriction, including without limitation the rights
++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++copies of the Software, and to permit persons to whom the Software is
++furnished to do so, subject to the following conditions:
++
++The above copyright notice and this permission notice shall be included in
++all copies or substantial portions of the Software.
++
++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++THE SOFTWARE.
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/bower.json
+@@ -0,0 +1,30 @@
++{
++ "name": "source-map-resolve",
++ "version": "0.3.1",
++ "author": "Simon Lydell",
++ "license": "MIT",
++ "description": "Resolve the source map and/or sources for a generated file.",
++ "keywords": [
++ "source map",
++ "sourcemap",
++ "source",
++ "map",
++ "sourceMappingURL",
++ "resolve",
++ "resolver",
++ "locate",
++ "locator",
++ "find",
++ "finder"
++ ],
++ "authors": [
++ "Simon Lydell"
++ ],
++ "ignore": [
++ ".*"
++ ],
++ "dependencies": {
++ "source-map-url": "~0.3.0",
++ "resolve-url": "~0.2.1"
++ }
++}
+\ No newline at end of file
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/changelog.md
+@@ -0,0 +1,60 @@
++### Version 0.3.1 (2014-08-16) ###
++
++- Improved: Updated the source-map-url dependency to 0.3.0.
++
++
++### Version 0.3.0 (2014-07-02) ###
++
++- Removed: Argument checking. It’s not worth it. (Possibly
++ backwards-incompatible change.)
++- Added: The `sourceRoot` property of source maps may now be ignored, which can
++ be useful when resolving sources outside of the browser.
++- Added: It is now possible to resolve only the URLs of sources, without
++ reading them.
++
++
++### Version 0.2.0 (2014-06-22) ###
++
++- Changed: The result of `resolveSources` is now an object, not an array. The
++ old result array is available in the `sourcesContent` property.
++ (Backwards-incompatible change.)
++- Changed: `sources` has been renamed to `sourcesContent` in the result object
++ of `resolve`. (Backwards-incompatible change.)
++- Added: `resolveSources` now also returns all sources fully resolved, in the
++ `sourcesResolved` property.
++- Added: The result object of `resolve` now contains the `sourcesResolved`
++ property from `resolveSources`.
++
++
++### Version 0.1.4 (2014-06-16) ###
++
++- Fixed: `sourcesContent` was mis-typed as `sourceContents`, which meant that
++ the `sourcesContent` property of source maps never was used when resolving
++ sources.
++
++
++### Version 0.1.3 (2014-05-06) ###
++
++- Only documentation and meta-data changes.
++
++
++### Version 0.1.2 (2014-03-23) ###
++
++- Improved: Source maps starting with `)]}'` are now parsed correctly. The spec
++ allows source maps to start with that character sequence to prevent XSSI
++ attacks.
++
++
++### Version 0.1.1 (2014-03-06) ###
++
++- Improved: Make sourceRoot resolving more sensible.
++
++ A source root such as `/scripts/subdir` is now treated as `/scripts/subdir/`
++ — that is, as a directory called “subdir”, not a file called “subdir”.
++ Pointing to a file as source root does not makes sense.
++
++
++
++### Version 0.1.0 (2014-03-03) ###
++
++- Initial release.
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/component.json
+@@ -0,0 +1,29 @@
++{
++ "name": "source-map-resolve",
++ "version": "0.3.1",
++ "author": "Simon Lydell",
++ "license": "MIT",
++ "description": "Resolve the source map and/or sources for a generated file.",
++ "keywords": [
++ "source map",
++ "sourcemap",
++ "source",
++ "map",
++ "sourceMappingURL",
++ "resolve",
++ "resolver",
++ "locate",
++ "locator",
++ "find",
++ "finder"
++ ],
++ "repo": "lydell/source-map-resolve",
++ "main": "source-map-resolve.js",
++ "scripts": [
++ "source-map-resolve.js"
++ ],
++ "dependencies": {
++ "lydell/source-map-url": "~0.3.0",
++ "lydell/resolve-url": "~0.2.1"
++ }
++}
+\ No newline at end of file
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/generate-source-map-resolve.js
+@@ -0,0 +1,25 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++var fs = require("fs")
++
++var template = fs.readFileSync("source-map-resolve.js.template").toString()
++var nodeCode = fs.readFileSync("lib/source-map-resolve-node.js").toString()
++
++nodeCode = nodeCode
++
++ // Remove leading comments and `require`s.
++ .replace(/^\s*(?:\/\/.+\s+|var\s+\w+\s*=\s*require\([^)]+\).*\s+)*/, "")
++
++ // Remove `urix`.
++ .replace(/(\w+)\s*=\s*urix\(\1\)\s*/g, "")
++
++ // Change `module.exports = {...}` to `return {...}`.
++ .replace(/module\.exports = (\{[^}]+\})\s*$/, "return $1")
++
++ // Indent.
++ .replace(/^(?!$)/gm, " ")
++
++var code = template.replace(/[ \t]*\{\{source-map-resolve-node.js\}\}/, nodeCode)
++
++fs.writeFileSync("source-map-resolve.js", code)
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/lib/resolve-url.js
+@@ -0,0 +1,12 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++var url = require("url")
++
++function resolveUrl(/* ...urls */) {
++ return Array.prototype.reduce.call(arguments, function(resolved, nextUrl) {
++ return url.resolve(resolved, nextUrl)
++ })
++}
++
++module.exports = resolveUrl
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/lib/source-map-resolve-node.js
+@@ -0,0 +1,215 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++var sourceMappingURL = require("source-map-url")
++var resolveUrl = require("./resolve-url")
++var urix = require("urix")
++var atob = require("atob")
++
++
++
++function callbackAsync(callback, error, result) {
++ setImmediate(function() { callback(error, result) })
++}
++
++function parseMapToJSON(string) {
++ return JSON.parse(string.replace(/^\)\]\}'/, ""))
++}
++
++
++
++function resolveSourceMap(code, codeUrl, read, callback) {
++ var mapData
++ try {
++ mapData = resolveSourceMapHelper(code, codeUrl)
++ } catch (error) {
++ return callbackAsync(callback, error)
++ }
++ if (!mapData || mapData.map) {
++ return callbackAsync(callback, null, mapData)
++ }
++ read(mapData.url, function(error, result) {
++ if (error) {
++ return callback(error)
++ }
++ try {
++ mapData.map = parseMapToJSON(String(result))
++ } catch (error) {
++ return callback(error)
++ }
++ callback(null, mapData)
++ })
++}
++
++function resolveSourceMapSync(code, codeUrl, read) {
++ var mapData = resolveSourceMapHelper(code, codeUrl)
++ if (!mapData || mapData.map) {
++ return mapData
++ }
++ mapData.map = parseMapToJSON(String(read(mapData.url)))
++ return mapData
++}
++
++var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/
++var jsonMimeTypeRegex = /^(?:application|text)\/json$/
++
++function resolveSourceMapHelper(code, codeUrl) {
++ codeUrl = urix(codeUrl)
++
++ var url = sourceMappingURL.getFrom(code)
++ if (!url) {
++ return null
++ }
++
++ var dataUri = url.match(dataUriRegex)
++ if (dataUri) {
++ var mimeType = dataUri[1]
++ var lastParameter = dataUri[2]
++ var encoded = dataUri[3]
++ if (!jsonMimeTypeRegex.test(mimeType)) {
++ throw new Error("Unuseful data uri mime type: " + (mimeType || "text/plain"))
++ }
++ return {
++ sourceMappingURL: url,
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: parseMapToJSON(lastParameter === ";base64" ? atob(encoded) : decodeURIComponent(encoded))
++ }
++ }
++
++ var mapUrl = resolveUrl(codeUrl, url)
++ return {
++ sourceMappingURL: url,
++ url: mapUrl,
++ sourcesRelativeTo: mapUrl,
++ map: null
++ }
++}
++
++
++
++function resolveSources(map, mapUrl, read, options, callback) {
++ if (typeof options === "function") {
++ callback = options
++ options = {}
++ }
++ var pending = map.sources.length
++ var errored = false
++ var result = {
++ sourcesResolved: [],
++ sourcesContent: []
++ }
++
++ var done = function(error) {
++ if (errored) {
++ return
++ }
++ if (error) {
++ errored = true
++ return callback(error)
++ }
++ pending--
++ if (pending === 0) {
++ callback(null, result)
++ }
++ }
++
++ resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {
++ result.sourcesResolved[index] = fullUrl
++ if (typeof sourceContent === "string") {
++ result.sourcesContent[index] = sourceContent
++ callbackAsync(done, null)
++ } else {
++ read(fullUrl, function(error, source) {
++ result.sourcesContent[index] = String(source)
++ done(error)
++ })
++ }
++ })
++}
++
++function resolveSourcesSync(map, mapUrl, read, options) {
++ var result = {
++ sourcesResolved: [],
++ sourcesContent: []
++ }
++ resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {
++ result.sourcesResolved[index] = fullUrl
++ if (read !== null) {
++ if (typeof sourceContent === "string") {
++ result.sourcesContent[index] = sourceContent
++ } else {
++ result.sourcesContent[index] = String(read(fullUrl))
++ }
++ }
++ })
++ return result
++}
++
++var endingSlash = /\/?$/
++
++function resolveSourcesHelper(map, mapUrl, options, fn) {
++ options = options || {}
++ mapUrl = urix(mapUrl)
++ var fullUrl
++ var sourceContent
++ for (var index = 0, len = map.sources.length; index < len; index++) {
++ if (map.sourceRoot && !options.ignoreSourceRoot) {
++ // Make sure that the sourceRoot ends with a slash, so that `/scripts/subdir` becomes
++ // `/scripts/subdir/<source>`, not `/scripts/<source>`. Pointing to a file as source root
++ // does not make sense.
++ fullUrl = resolveUrl(mapUrl, map.sourceRoot.replace(endingSlash, "/"), map.sources[index])
++ } else {
++ fullUrl = resolveUrl(mapUrl, map.sources[index])
++ }
++ sourceContent = (map.sourcesContent || [])[index]
++ fn(fullUrl, sourceContent, index)
++ }
++}
++
++
++
++function resolve(code, codeUrl, read, options, callback) {
++ if (typeof options === "function") {
++ callback = options
++ options = {}
++ }
++ resolveSourceMap(code, codeUrl, read, function(error, mapData) {
++ if (error) {
++ return callback(error)
++ }
++ if (!mapData) {
++ return callback(null, null)
++ }
++ resolveSources(mapData.map, mapData.sourcesRelativeTo, read, options, function(error, result) {
++ if (error) {
++ return callback(error)
++ }
++ mapData.sourcesResolved = result.sourcesResolved
++ mapData.sourcesContent = result.sourcesContent
++ callback(null, mapData)
++ })
++ })
++}
++
++function resolveSync(code, codeUrl, read, options) {
++ var mapData = resolveSourceMapSync(code, codeUrl, read)
++ if (!mapData) {
++ return null
++ }
++ var result = resolveSourcesSync(mapData.map, mapData.sourcesRelativeTo, read, options)
++ mapData.sourcesResolved = result.sourcesResolved
++ mapData.sourcesContent = result.sourcesContent
++ return mapData
++}
++
++
++
++module.exports = {
++ resolveSourceMap: resolveSourceMap,
++ resolveSourceMapSync: resolveSourceMapSync,
++ resolveSources: resolveSources,
++ resolveSourcesSync: resolveSourcesSync,
++ resolve: resolve,
++ resolveSync: resolveSync
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/package.json
+@@ -0,0 +1,55 @@
++{
++ "name": "source-map-resolve",
++ "version": "0.3.1",
++ "author": "Simon Lydell",
++ "license": "MIT",
++ "description": "Resolve the source map and/or sources for a generated file.",
++ "keywords": [
++ "source map",
++ "sourcemap",
++ "source",
++ "map",
++ "sourceMappingURL",
++ "resolve",
++ "resolver",
++ "locate",
++ "locator",
++ "find",
++ "finder"
++ ],
++ "repository": "lydell/source-map-resolve",
++ "main": "lib/source-map-resolve-node.js",
++ "browser": "source-map-resolve.js",
++ "scripts": {
++ "lint": "jshint lib/ test/",
++ "unit": "node test/source-map-resolve.js && node test/windows.js",
++ "test": "npm run lint && npm run unit",
++ "build": "node generate-source-map-resolve.js"
++ },
++ "dependencies": {
++ "source-map-url": "~0.3.0",
++ "atob": "~1.1.0",
++ "urix": "~0.1.0",
++ "resolve-url": "~0.2.1"
++ },
++ "devDependencies": {
++ "tape": "~2.5.0",
++ "jshint": "~2.4.3",
++ "setimmediate": "~1.0.1",
++ "Base64": "~0.2.0",
++ "simple-asyncify": "~0.1.0"
++ },
++ "testling": {
++ "files": "test/source-map-resolve.js",
++ "browsers": [
++ "ie/8..latest",
++ "chrome/latest",
++ "firefox/latest",
++ "opera/12",
++ "opera/latest",
++ "safari/5",
++ "iphone/6",
++ "android-browser/4"
++ ]
++ }
++}
+\ No newline at end of file
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/readme.md
+@@ -0,0 +1,208 @@
++Overview [![Build Status](https://travis-ci.org/lydell/source-map-resolve.png?branch=master)](https://travis-ci.org/lydell/source-map-resolve)
++========
++
++[![browser support](https://ci.testling.com/lydell/source-map-resolve.png)](https://ci.testling.com/lydell/source-map-resolve)
++
++Resolve the source map and/or sources for a generated file.
++
++```js
++var sourceMapResolve = require("source-map-resolve")
++var sourceMap = require("source-map")
++
++var code = [
++ "!function(){...}();",
++ "/*# sourceMappingURL=foo.js.map */"
++].join("\n")
++
++sourceMapResolve.resolveSourceMap(code, "/js/foo.js", fs.readFile, function(error, result) {
++ if (error) {
++ return notifyFailure(error)
++ }
++ result
++ // {
++ // map: {file: "foo.js", mappings: "...", sources: ["/coffee/foo.coffee"], names: []},
++ // url: "/js/foo.js.map",
++ // sourcesRelativeTo: "/js/foo.js.map",
++ // sourceMappingURL: "foo.js.map"
++ // }
++
++ sourceMapResolve.resolveSources(result.map, result.sourcesRelativeTo, fs.readFile, function(error, result) {
++ if (error) {
++ return notifyFailure(error)
++ }
++ result
++ // {
++ // sourcesResolved: ["/coffee/foo.coffee"],
++ // sourcesContent: ["<contents of /coffee/foo.coffee>"]
++ // }
++ })
++})
++
++sourceMapResolve.resolve(code, "/js/foo.js", fs.readFile, function(error, result) {
++ if (error) {
++ return notifyFailure(error)
++ }
++ result
++ // {
++ // map: {file: "foo.js", mappings: "...", sources: ["/coffee/foo.coffee"], names: []},
++ // url: "/js/foo.js.map",
++ // sourcesRelativeTo: "/js/foo.js.map",
++ // sourceMappingURL: "foo.js.map",
++ // sourcesResolved: ["/coffee/foo.coffee"],
++ // sourcesContent: ["<contents of /coffee/foo.coffee>"]
++ // }
++ result.map.sourcesContent = result.sourcesContent
++ var map = new sourceMap.sourceMapConsumer(result.map)
++ map.sourceContentFor("/coffee/foo.coffee")
++ // "<contents of /coffee/foo.coffee>"
++})
++```
++
++
++Installation
++============
++
++- `npm install source-map-resolve`
++- `bower install source-map-resolve`
++- `component install lydell/source-map-resolve`
++
++Works with CommonJS, AMD and browser globals, through UMD.
++
++Note: This module requires `setImmediate` and `atob`.
++Use polyfills if needed, such as:
++
++- <https://github.com/NobleJS/setImmediate>
++- <https://github.com/davidchambers/Base64.js>
++
++
++Usage
++=====
++
++### `sourceMapResolve.resolveSourceMap(code, codeUrl, read, callback)` ###
++
++- `code` is a string of code that may or may not contain a sourceMappingURL
++ comment. Such a comment is used to resolve the source map.
++- `codeUrl` is the url to the file containing `code`. If the sourceMappingURL
++ is relative, it is resolved against `codeUrl`.
++- `read(url, callback)` is a function that reads `url` and responds using
++ `callback(error, content)`. In Node.js you might want to use `fs.readFile`,
++ while in the browser you might want to use an asynchronus `XMLHttpRequest`.
++- `callback(error, result)` is a function that is invoked with either an error
++ or `null` and the result.
++
++The result is an object with the following properties:
++
++- `map`: The source map for `code`, as an object (not a string).
++- `url`: The url to the source map. If the source map came from a data uri,
++ this property is `null`, since then there is no url to it.
++- `sourcesRelativeTo`: The url that the sources of the source map are relative
++ to. Since the sources are relative to the source map, and the url to the
++ source map is provided as the `url` property, this property might seem
++ superfluos. However, remember that the `url` property can be `null` if the
++ source map came from a data uri. If so, the sources are relative to the file
++ containing the data uri—`codeUrl`. This property will be identical to the
++ `url` property or `codeUrl`, whichever is appropriate. This way you can
++ conveniently resolve the sources without having to think about where the
++ source map came from.
++- `sourceMappingURL`: The url of the sourceMappingURL comment in `code`.
++
++If `code` contains no sourceMappingURL, the result is `null`.
++
++### `sourceMapResolve.resolveSources(map, mapUrl, read, [options], callback)` ###
++
++- `map` is a source map, as an object (not a string).
++- `mapUrl` is the url to the file containing `map`. Relative sources in the
++ source map, if any, are resolved against `mapUrl`.
++- `read(url, callback)` is a function that reads `url` and responds using
++ `callback(error, content)`. In Node.js you might want to use `fs.readFile`,
++ while in the browser you might want to use an asynchronus `XMLHttpRequest`.
++- `options` is an optional object with any of the following properties:
++ - `ignoreSourceRoot`: The `sourceRoot` property of source maps might only be
++ relevant when resolving sources in the browser. This lets you bypass it
++ when using the module outside of a browser, if needed. Defaults to `false`.
++- `callback(error, result)` is a function that is invoked with either an error
++ or `null` and the result.
++
++The result is an object with the following properties:
++
++- `sourcesResolved`: The same as `map.sources`, except all the sources are
++ fully resolved.
++- `sourcesContent`: An array with the contents of all sources in `map.sources`,
++ in the same order as `map.sources`.
++
++### `sourceMapResolve.resolve(code, codeUrl, read, [options], callback)` ###
++
++The arguments are identical to `sourceMapResolve.resolveSourceMap`, except that
++you may also provide the same `options` as in
++`sourceMapResolve.resolveSources`.
++
++This is simply a convienience method that first resolves the source map and
++then its sources. You could also do this by first calling
++`sourceMapResolve.resolveSourceMap` and then `sourceMapResolve.resolveSources`.
++
++The result is identical to `sourceMapResolve.resolveSourceMap`, with the
++properties from `sourceMapResolve.resolveSources` merged into it.
++
++### `sourceMapResolve.*Sync()` ###
++
++There are also sync versions of the three previous functions. They are identical
++to the async versions, except:
++
++- They expect a sync reading function. In Node.js you might want to use
++ `fs.readFileSync`, while in the browser you might want to use a synchronus
++ `XMLHttpRequest`.
++- They throw errors and return the result instead of using a callback.
++
++`sourceMapResolve.resolveSourcesSync` also accepts `null` as the `read`
++parameter. The result is the same as when passing a function as the `read
++parameter`, except that the `sourcesContent` property of the result will be an
++empty array. In other words, the sources aren’t read. You only get the
++`sourcesResolved` property. (This only supported in the synchronus version, since
++there is no point doing it asynchronusly.)
++
++
++Note
++====
++
++This module resolves the source map for a given generated file by looking for a
++sourceMappingURL comment. The spec defines yet a way to provide the URL to the
++source map: By sending the `SourceMap: <url>` header along with the generated
++file. Since this module doesn’t retrive the generated code for you (instead
++_you_ give the generated code to the module), it’s up to you to look for such a
++header when you retrieve the file (should the need arise).
++
++
++Development
++===========
++
++Tests
++-----
++
++First off, run `npm install` to install testing modules and browser polyfills.
++
++`npm test` lints the code and runs the test suite in Node.js.
++
++To run the tests in a browser, run `testling` (`npm install -g testling`) or
++`testling -u`.
++
++x-package.json5
++---------------
++
++package.json, component.json and bower.json are all generated from
++x-package.json5 by using [`xpkg`]. Only edit x-package.json5, and remember to
++run `xpkg` before commiting!
++
++[`xpkg`]: https://github.com/kof/node-xpkg
++
++Generating the browser version
++------------------------------
++
++source-map-resolve.js is generated from source-map-resolve-node.js and
++source-map-resolve-template.js. Only edit the two latter files, _not_
++source-map-resolve.js! To generate it, run `npm run build`.
++
++
++License
++=======
++
++[The X11 (“MIT”) License](LICENSE).
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/source-map-resolve.js
+@@ -0,0 +1,223 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++// Note: source-map-resolve.js is generated from source-map-resolve-node.js and
++// source-map-resolve-template.js. Only edit the two latter files, _not_
++// source-map-resolve.js!
++
++void (function(root, factory) {
++ if (typeof define === "function" && define.amd) {
++ define(["source-map-url", "resolve-url"], factory)
++ } else if (typeof exports === "object") {
++ var sourceMappingURL = require("source-map-url")
++ var resolveUrl = require("resolve-url")
++ module.exports = factory(sourceMappingURL, resolveUrl)
++ } else {
++ root.sourceMapResolve = factory(root.sourceMappingURL, root.resolveUrl)
++ }
++}(this, function(sourceMappingURL, resolveUrl) {
++
++ function callbackAsync(callback, error, result) {
++ setImmediate(function() { callback(error, result) })
++ }
++
++ function parseMapToJSON(string) {
++ return JSON.parse(string.replace(/^\)\]\}'/, ""))
++ }
++
++
++
++ function resolveSourceMap(code, codeUrl, read, callback) {
++ var mapData
++ try {
++ mapData = resolveSourceMapHelper(code, codeUrl)
++ } catch (error) {
++ return callbackAsync(callback, error)
++ }
++ if (!mapData || mapData.map) {
++ return callbackAsync(callback, null, mapData)
++ }
++ read(mapData.url, function(error, result) {
++ if (error) {
++ return callback(error)
++ }
++ try {
++ mapData.map = parseMapToJSON(String(result))
++ } catch (error) {
++ return callback(error)
++ }
++ callback(null, mapData)
++ })
++ }
++
++ function resolveSourceMapSync(code, codeUrl, read) {
++ var mapData = resolveSourceMapHelper(code, codeUrl)
++ if (!mapData || mapData.map) {
++ return mapData
++ }
++ mapData.map = parseMapToJSON(String(read(mapData.url)))
++ return mapData
++ }
++
++ var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/
++ var jsonMimeTypeRegex = /^(?:application|text)\/json$/
++
++ function resolveSourceMapHelper(code, codeUrl) {
++ var url = sourceMappingURL.getFrom(code)
++ if (!url) {
++ return null
++ }
++
++ var dataUri = url.match(dataUriRegex)
++ if (dataUri) {
++ var mimeType = dataUri[1]
++ var lastParameter = dataUri[2]
++ var encoded = dataUri[3]
++ if (!jsonMimeTypeRegex.test(mimeType)) {
++ throw new Error("Unuseful data uri mime type: " + (mimeType || "text/plain"))
++ }
++ return {
++ sourceMappingURL: url,
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: parseMapToJSON(lastParameter === ";base64" ? atob(encoded) : decodeURIComponent(encoded))
++ }
++ }
++
++ var mapUrl = resolveUrl(codeUrl, url)
++ return {
++ sourceMappingURL: url,
++ url: mapUrl,
++ sourcesRelativeTo: mapUrl,
++ map: null
++ }
++ }
++
++
++
++ function resolveSources(map, mapUrl, read, options, callback) {
++ if (typeof options === "function") {
++ callback = options
++ options = {}
++ }
++ var pending = map.sources.length
++ var errored = false
++ var result = {
++ sourcesResolved: [],
++ sourcesContent: []
++ }
++
++ var done = function(error) {
++ if (errored) {
++ return
++ }
++ if (error) {
++ errored = true
++ return callback(error)
++ }
++ pending--
++ if (pending === 0) {
++ callback(null, result)
++ }
++ }
++
++ resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {
++ result.sourcesResolved[index] = fullUrl
++ if (typeof sourceContent === "string") {
++ result.sourcesContent[index] = sourceContent
++ callbackAsync(done, null)
++ } else {
++ read(fullUrl, function(error, source) {
++ result.sourcesContent[index] = String(source)
++ done(error)
++ })
++ }
++ })
++ }
++
++ function resolveSourcesSync(map, mapUrl, read, options) {
++ var result = {
++ sourcesResolved: [],
++ sourcesContent: []
++ }
++ resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {
++ result.sourcesResolved[index] = fullUrl
++ if (read !== null) {
++ if (typeof sourceContent === "string") {
++ result.sourcesContent[index] = sourceContent
++ } else {
++ result.sourcesContent[index] = String(read(fullUrl))
++ }
++ }
++ })
++ return result
++ }
++
++ var endingSlash = /\/?$/
++
++ function resolveSourcesHelper(map, mapUrl, options, fn) {
++ options = options || {}
++ var fullUrl
++ var sourceContent
++ for (var index = 0, len = map.sources.length; index < len; index++) {
++ if (map.sourceRoot && !options.ignoreSourceRoot) {
++ // Make sure that the sourceRoot ends with a slash, so that `/scripts/subdir` becomes
++ // `/scripts/subdir/<source>`, not `/scripts/<source>`. Pointing to a file as source root
++ // does not make sense.
++ fullUrl = resolveUrl(mapUrl, map.sourceRoot.replace(endingSlash, "/"), map.sources[index])
++ } else {
++ fullUrl = resolveUrl(mapUrl, map.sources[index])
++ }
++ sourceContent = (map.sourcesContent || [])[index]
++ fn(fullUrl, sourceContent, index)
++ }
++ }
++
++
++
++ function resolve(code, codeUrl, read, options, callback) {
++ if (typeof options === "function") {
++ callback = options
++ options = {}
++ }
++ resolveSourceMap(code, codeUrl, read, function(error, mapData) {
++ if (error) {
++ return callback(error)
++ }
++ if (!mapData) {
++ return callback(null, null)
++ }
++ resolveSources(mapData.map, mapData.sourcesRelativeTo, read, options, function(error, result) {
++ if (error) {
++ return callback(error)
++ }
++ mapData.sourcesResolved = result.sourcesResolved
++ mapData.sourcesContent = result.sourcesContent
++ callback(null, mapData)
++ })
++ })
++ }
++
++ function resolveSync(code, codeUrl, read, options) {
++ var mapData = resolveSourceMapSync(code, codeUrl, read)
++ if (!mapData) {
++ return null
++ }
++ var result = resolveSourcesSync(mapData.map, mapData.sourcesRelativeTo, read, options)
++ mapData.sourcesResolved = result.sourcesResolved
++ mapData.sourcesContent = result.sourcesContent
++ return mapData
++ }
++
++
++
++ return {
++ resolveSourceMap: resolveSourceMap,
++ resolveSourceMapSync: resolveSourceMapSync,
++ resolveSources: resolveSources,
++ resolveSourcesSync: resolveSourcesSync,
++ resolve: resolve,
++ resolveSync: resolveSync
++ }
++
++}));
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/source-map-resolve.js.template
+@@ -0,0 +1,22 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++// Note: source-map-resolve.js is generated from source-map-resolve-node.js and
++// source-map-resolve-template.js. Only edit the two latter files, _not_
++// source-map-resolve.js!
++
++void (function(root, factory) {
++ if (typeof define === "function" && define.amd) {
++ define(["source-map-url", "resolve-url"], factory)
++ } else if (typeof exports === "object") {
++ var sourceMappingURL = require("source-map-url")
++ var resolveUrl = require("resolve-url")
++ module.exports = factory(sourceMappingURL, resolveUrl)
++ } else {
++ root.sourceMapResolve = factory(root.sourceMappingURL, root.resolveUrl)
++ }
++}(this, function(sourceMappingURL, resolveUrl) {
++
++ {{source-map-resolve-node.js}}
++
++}));
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/test/common.js
+@@ -0,0 +1,27 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++function u(url) {
++ return "code\n/*# sourceMappingURL=" + url + " */"
++}
++
++function read(x) {
++ return function() {
++ return x
++ }
++}
++
++function Throws(x) {
++ throw new Error(x)
++}
++
++function identity(x) {
++ return x
++}
++
++module.exports = {
++ u: u,
++ read: read,
++ Throws: Throws,
++ identity: identity
++}
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/test/source-map-resolve.js
+@@ -0,0 +1,819 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++var test = require("tape")
++var asyncify = require("simple-asyncify")
++var common = require("./common")
++var u = common.u
++var read = common.read
++var Throws = common.Throws
++var identity = common.identity
++
++var sourceMapResolve = require("../")
++
++// Polyfills.
++require("setimmediate")
++if (typeof window !== "undefined" && !window.atob) {
++ window.atob = require("Base64").atob
++}
++
++"use strict"
++
++var map = {
++ simple: {
++ mappings: "AAAA",
++ sources: ["foo.js"],
++ names: []
++ },
++ sourceRoot: {
++ mappings: "AAAA",
++ sourceRoot: "/static/js/app/",
++ sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"],
++ names: []
++ },
++ sourceRootNoSlash: {
++ mappings: "AAAA",
++ sourceRoot: "/static/js/app",
++ sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"],
++ names: []
++ },
++ sourcesContent: {
++ mappings: "AAAA",
++ sourceRoot: "/static/js/app/",
++ sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"],
++ sourcesContent: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"],
++ names: []
++ },
++ mixed: {
++ mappings: "AAAA",
++ sources: ["foo.js", "lib/bar.js", "../vendor/dom.js", "/version.js", "//foo.org/baz.js"],
++ sourcesContent: ["foo.js", null , null , "/version.js", "//foo.org/baz.js"],
++ names: []
++ }
++}
++map.simpleString = JSON.stringify(map.simple)
++map.XSSIsafe = ")]}'" + map.simpleString
++
++var code = {
++ fileRelative: u("foo.js.map"),
++ domainRelative: u("/foo.js.map"),
++ schemeRelative: u("//foo.org/foo.js.map"),
++ absolute: u("https://foo.org/foo.js.map"),
++ dataUri: u("data:application/json," +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"),
++ base64: u("data:application/json;base64," +
++ "eyJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W119"),
++ dataUriText: u("data:text/json," +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"),
++ dataUriParameter: u("data:application/json;charset=UTF-8;foo=bar," +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"),
++ dataUriNoMime: u("data:,foo"),
++ dataUriInvalidMime: u("data:text/html,foo"),
++ dataUriInvalidJSON: u("data:application/json,foo"),
++ dataUriXSSIsafe: u("data:application/json," + ")%5D%7D%27" +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D"),
++ dataUriEmpty: u("data:"),
++ noMap: ""
++}
++
++
++function testResolveSourceMap(method, sync) {
++ return function(t) {
++ var wrap = (sync ? identity : asyncify)
++
++ var codeUrl = "http://example.com/a/b/c/foo.js"
++
++ t.plan(1 + 18*3)
++
++ t.equal(typeof method, "function", "is a function")
++
++ if (sync) {
++ method = asyncify(method)
++ }
++
++ var next = false
++ function isAsync() { t.ok(next, "is async") }
++
++ method(code.fileRelative, codeUrl, wrap(read(map.simpleString)), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "foo.js.map",
++ url: "http://example.com/a/b/c/foo.js.map",
++ sourcesRelativeTo: "http://example.com/a/b/c/foo.js.map",
++ map: map.simple
++ }, "fileRelative")
++ isAsync()
++ })
++
++ method(code.domainRelative, codeUrl, wrap(read(map.simpleString)), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "/foo.js.map",
++ url: "http://example.com/foo.js.map",
++ sourcesRelativeTo: "http://example.com/foo.js.map",
++ map: map.simple
++ }, "domainRelative")
++ isAsync()
++ })
++
++ method(code.schemeRelative, codeUrl, wrap(read(map.simpleString)), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "//foo.org/foo.js.map",
++ url: "http://foo.org/foo.js.map",
++ sourcesRelativeTo: "http://foo.org/foo.js.map",
++ map: map.simple
++ }, "schemeRelative")
++ isAsync()
++ })
++
++ method(code.absolute, codeUrl, wrap(read(map.simpleString)), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "https://foo.org/foo.js.map",
++ url: "https://foo.org/foo.js.map",
++ sourcesRelativeTo: "https://foo.org/foo.js.map",
++ map: map.simple
++ }, "absolute")
++ isAsync()
++ })
++
++ method(code.dataUri, codeUrl, wrap(Throws), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "data:application/json," +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D",
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: map.simple
++ }, "dataUri")
++ isAsync()
++ })
++
++ method(code.base64, codeUrl, wrap(Throws), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "data:application/json;base64," +
++ "eyJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W119",
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: map.simple
++ }, "base64")
++ isAsync()
++ })
++
++ method(code.dataUriText, codeUrl, wrap(Throws), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "data:text/json," +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D",
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: map.simple
++ }, "dataUriText")
++ isAsync()
++ })
++
++ method(code.dataUriParameter, codeUrl, wrap(Throws), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "data:application/json;charset=UTF-8;foo=bar," +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D",
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: map.simple
++ }, "dataUriParameter")
++ isAsync()
++ })
++
++ method(code.dataUriNoMime, codeUrl, wrap(Throws), function(error, result) {
++ t.ok(error.message.match(/mime type.+text\/plain/), "dataUriNoMime")
++ t.notOk(result)
++ isAsync()
++ })
++
++ method(code.dataUriInvalidMime, codeUrl, wrap(Throws), function(error, result) {
++ t.ok(error.message.match(/mime type.+text\/html/), "dataUriInvalidMime")
++ t.notOk(result)
++ isAsync()
++ })
++
++ method(code.dataUriInvalidJSON, codeUrl, wrap(Throws), function(error, result) {
++ t.ok(error instanceof SyntaxError && error.message !== "data:application/json,foo",
++ "dataUriInvalidJSON")
++ t.notOk(result)
++ isAsync()
++ })
++
++ method(code.dataUriXSSIsafe, codeUrl, wrap(Throws), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "data:application/json," + ")%5D%7D%27" +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D",
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: map.simple
++ }, "dataUriXSSIsafe")
++ isAsync()
++ })
++
++ method(code.dataUriEmpty, codeUrl, wrap(Throws), function(error, result) {
++ t.ok(error.message.match(/mime type.+text\/plain/), "dataUriEmpty")
++ t.notOk(result)
++ isAsync()
++ })
++
++ method(code.noMap, codeUrl, wrap(Throws), function(error, result) {
++ t.error(error)
++ t.equal(result, null, "noMap")
++ isAsync()
++ })
++
++ method(code.absolute, codeUrl, wrap(read([map.simpleString])), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "https://foo.org/foo.js.map",
++ url: "https://foo.org/foo.js.map",
++ sourcesRelativeTo: "https://foo.org/foo.js.map",
++ map: map.simple
++ }, "read non-string")
++ isAsync()
++ })
++
++ method(code.absolute, codeUrl, wrap(read("invalid JSON")), function(error, result) {
++ t.ok(error instanceof SyntaxError, "read invalid JSON")
++ t.notOk(result)
++ isAsync()
++ })
++
++ method(code.absolute, codeUrl, wrap(read(map.XSSIsafe)), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "https://foo.org/foo.js.map",
++ url: "https://foo.org/foo.js.map",
++ sourcesRelativeTo: "https://foo.org/foo.js.map",
++ map: map.simple
++ }, "XSSIsafe map")
++ isAsync()
++ })
++
++ method(code.absolute, codeUrl, wrap(Throws), function(error, result) {
++ t.equal(error.message, "https://foo.org/foo.js.map", "read throws")
++ t.notOk(result)
++ isAsync()
++ })
++
++ next = true
++ }
++}
++
++test(".resolveSourceMap", testResolveSourceMap(sourceMapResolve.resolveSourceMap, false))
++
++test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true))
++
++
++function testResolveSources(method, sync) {
++ return function(t) {
++ var wrap = (sync ? identity : asyncify)
++
++ var mapUrl = "http://example.com/a/b/c/foo.js.map"
++
++ t.plan(1 + 7*3 + 4)
++
++ t.equal(typeof method, "function", "is a function")
++
++ if (sync) {
++ method = asyncify(method)
++ }
++
++ var next = false
++ function isAsync() { t.ok(next, "is async") }
++
++ var options
++
++ method(map.simple, mapUrl, wrap(identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourcesResolved: ["http://example.com/a/b/c/foo.js"],
++ sourcesContent: ["http://example.com/a/b/c/foo.js"]
++ }, "simple")
++ isAsync()
++ })
++
++ method(map.sourceRoot, mapUrl, wrap(identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourcesResolved: [
++ "http://example.com/static/js/app/foo.js",
++ "http://example.com/static/js/app/lib/bar.js",
++ "http://example.com/static/js/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ],
++ sourcesContent: [
++ "http://example.com/static/js/app/foo.js",
++ "http://example.com/static/js/app/lib/bar.js",
++ "http://example.com/static/js/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ]
++ }, "sourceRoot")
++ isAsync()
++ })
++
++ options = {ignoreSourceRoot: true}
++ method(map.sourceRoot, mapUrl, wrap(identity), options, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourcesResolved: [
++ "http://example.com/a/b/c/foo.js",
++ "http://example.com/a/b/c/lib/bar.js",
++ "http://example.com/a/b/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ],
++ sourcesContent: [
++ "http://example.com/a/b/c/foo.js",
++ "http://example.com/a/b/c/lib/bar.js",
++ "http://example.com/a/b/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ]
++ }, "ignore sourceRoot")
++ isAsync()
++ })
++
++ method(map.sourceRootNoSlash, mapUrl, wrap(identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourcesResolved: [
++ "http://example.com/static/js/app/foo.js",
++ "http://example.com/static/js/app/lib/bar.js",
++ "http://example.com/static/js/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ],
++ sourcesContent: [
++ "http://example.com/static/js/app/foo.js",
++ "http://example.com/static/js/app/lib/bar.js",
++ "http://example.com/static/js/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ]
++ }, "sourceRootNoSlash")
++ isAsync()
++ })
++
++ method(map.sourcesContent, mapUrl, wrap(Throws), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourcesResolved: [
++ "http://example.com/static/js/app/foo.js",
++ "http://example.com/static/js/app/lib/bar.js",
++ "http://example.com/static/js/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ],
++ sourcesContent: [
++ "foo.js",
++ "lib/bar.js",
++ "../vendor/dom.js",
++ "/version.js",
++ "//foo.org/baz.js"
++ ]
++ }, "sourcesContent")
++ isAsync()
++ })
++
++ method(map.mixed, mapUrl, wrap(identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourcesResolved: [
++ "http://example.com/a/b/c/foo.js",
++ "http://example.com/a/b/c/lib/bar.js",
++ "http://example.com/a/b/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ],
++ sourcesContent: [
++ "foo.js",
++ "http://example.com/a/b/c/lib/bar.js",
++ "http://example.com/a/b/vendor/dom.js",
++ "/version.js",
++ "//foo.org/baz.js"
++ ]
++ }, "mixed")
++ isAsync()
++ })
++
++ method(map.simple, mapUrl, wrap(read(["non", "string"])), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourcesResolved: ["http://example.com/a/b/c/foo.js"],
++ sourcesContent: ["non,string"]
++ }, "read non-string")
++ isAsync()
++ })
++
++ var calledBack = false
++ method(map.mixed, mapUrl, wrap(Throws), function(error, result) {
++ t.equal(calledBack, false)
++ calledBack = true
++ t.equal(error.message, "http://example.com/a/b/c/lib/bar.js", "read throws")
++ t.notOk(result)
++ isAsync()
++ })
++
++ next = true
++ }
++}
++
++test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false))
++
++test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true))
++
++test(".resolveSourcesSync no read", function(t) {
++ t.plan(1)
++
++ var mapUrl = "http://example.com/a/b/c/foo.js.map"
++ var result = sourceMapResolve.resolveSourcesSync(map.mixed, mapUrl, null)
++
++ t.deepEqual(result, {
++ sourcesResolved: [
++ "http://example.com/a/b/c/foo.js",
++ "http://example.com/a/b/c/lib/bar.js",
++ "http://example.com/a/b/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ],
++ sourcesContent: []
++ })
++})
++
++
++function testResolve(method, sync) {
++ return function(t) {
++ var wrap = (sync ? identity : asyncify)
++ var wrapMap = function(mapFn, fn) {
++ return wrap(function(url) {
++ if (/\.map$/.test(url)) {
++ return mapFn(url)
++ }
++ return fn(url)
++ })
++ }
++
++ var codeUrl = "http://example.com/a/b/c/foo.js"
++
++ t.plan(1 + 18*3 + 7*4 + 4)
++
++ t.equal(typeof method, "function", "is a function")
++
++ if (sync) {
++ method = asyncify(method)
++ }
++
++ var next = false
++ function isAsync() { t.ok(next, "is async") }
++
++ var readSimple = wrapMap(read(map.simpleString), identity)
++
++ method(code.fileRelative, codeUrl, readSimple, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "foo.js.map",
++ url: "http://example.com/a/b/c/foo.js.map",
++ sourcesRelativeTo: "http://example.com/a/b/c/foo.js.map",
++ map: map.simple,
++ sourcesResolved: ["http://example.com/a/b/c/foo.js"],
++ sourcesContent: ["http://example.com/a/b/c/foo.js"]
++ }, "fileRelative")
++ isAsync()
++ })
++
++ method(code.domainRelative, codeUrl, readSimple, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "/foo.js.map",
++ url: "http://example.com/foo.js.map",
++ sourcesRelativeTo: "http://example.com/foo.js.map",
++ map: map.simple,
++ sourcesResolved: ["http://example.com/foo.js"],
++ sourcesContent: ["http://example.com/foo.js"]
++ }, "domainRelative")
++ isAsync()
++ })
++
++ method(code.schemeRelative, codeUrl, readSimple, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "//foo.org/foo.js.map",
++ url: "http://foo.org/foo.js.map",
++ sourcesRelativeTo: "http://foo.org/foo.js.map",
++ map: map.simple,
++ sourcesResolved: ["http://foo.org/foo.js"],
++ sourcesContent: ["http://foo.org/foo.js"]
++ }, "schemeRelative")
++ isAsync()
++ })
++
++ method(code.absolute, codeUrl, readSimple, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "https://foo.org/foo.js.map",
++ url: "https://foo.org/foo.js.map",
++ sourcesRelativeTo: "https://foo.org/foo.js.map",
++ map: map.simple,
++ sourcesResolved: ["https://foo.org/foo.js"],
++ sourcesContent: ["https://foo.org/foo.js"]
++ }, "absolute")
++ isAsync()
++ })
++
++ method(code.dataUri, codeUrl, wrapMap(Throws, identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "data:application/json," +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D",
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: map.simple,
++ sourcesResolved: ["http://example.com/a/b/c/foo.js"],
++ sourcesContent: ["http://example.com/a/b/c/foo.js"]
++ }, "dataUri")
++ isAsync()
++ })
++
++ method(code.base64, codeUrl, wrapMap(Throws, identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "data:application/json;base64," +
++ "eyJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W119",
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: map.simple,
++ sourcesResolved: ["http://example.com/a/b/c/foo.js"],
++ sourcesContent: ["http://example.com/a/b/c/foo.js"]
++ }, "base64")
++ isAsync()
++ })
++
++ method(code.dataUriText, codeUrl, wrapMap(Throws, identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "data:text/json," +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D",
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: map.simple,
++ sourcesResolved: ["http://example.com/a/b/c/foo.js"],
++ sourcesContent: ["http://example.com/a/b/c/foo.js"]
++ }, "dataUriText")
++ isAsync()
++ })
++
++ method(code.dataUriParameter, codeUrl, wrapMap(Throws, identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "data:application/json;charset=UTF-8;foo=bar," +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D",
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: map.simple,
++ sourcesResolved: ["http://example.com/a/b/c/foo.js"],
++ sourcesContent: ["http://example.com/a/b/c/foo.js"]
++ }, "dataUriParameter")
++ isAsync()
++ })
++
++ method(code.dataUriNoMime, codeUrl, wrap(Throws), function(error, result) {
++ t.ok(error.message.match(/mime type.+text\/plain/), "dataUriNoMime")
++ t.notOk(result)
++ isAsync()
++ })
++
++ method(code.dataUriInvalidMime, codeUrl, wrap(Throws), function(error, result) {
++ t.ok(error.message.match(/mime type.+text\/html/), "dataUriInvalidMime")
++ t.notOk(result)
++ isAsync()
++ })
++
++ method(code.dataUriInvalidJSON, codeUrl, wrap(Throws), function(error, result) {
++ t.ok(error instanceof SyntaxError && error.message !== "data:application/json,foo",
++ "dataUriInvalidJSON")
++ t.notOk(result)
++ isAsync()
++ })
++
++ method(code.dataUriXSSIsafe, codeUrl, wrapMap(Throws, identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "data:application/json," + ")%5D%7D%27" +
++ "%7B%22mappings%22%3A%22AAAA%22%2C%22sources%22%3A%5B%22" +
++ "foo.js%22%5D%2C%22names%22%3A%5B%5D%7D",
++ url: null,
++ sourcesRelativeTo: codeUrl,
++ map: map.simple,
++ sourcesResolved: ["http://example.com/a/b/c/foo.js"],
++ sourcesContent: ["http://example.com/a/b/c/foo.js"]
++ }, "dataUriXSSIsafe")
++ isAsync()
++ })
++
++ method(code.dataUriEmpty, codeUrl, wrap(Throws), function(error, result) {
++ t.ok(error.message.match(/mime type.+text\/plain/), "dataUriEmpty")
++ t.notOk(result)
++ isAsync()
++ })
++
++ method(code.noMap, codeUrl, wrap(Throws), function(error, result) {
++ t.error(error)
++ t.equal(result, null, "noMap")
++ isAsync()
++ })
++
++ method(code.absolute, codeUrl, wrap(read([map.simpleString])), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "https://foo.org/foo.js.map",
++ url: "https://foo.org/foo.js.map",
++ sourcesRelativeTo: "https://foo.org/foo.js.map",
++ map: map.simple,
++ sourcesResolved: ["https://foo.org/foo.js"],
++ sourcesContent: [map.simpleString]
++ }, "read non-string")
++ isAsync()
++ })
++
++ method(code.absolute, codeUrl, wrap(read("invalid JSON")), function(error, result) {
++ t.ok(error instanceof SyntaxError, "read invalid JSON")
++ t.notOk(result)
++ isAsync()
++ })
++
++ method(code.absolute, codeUrl, wrapMap(read(map.XSSIsafe), identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "https://foo.org/foo.js.map",
++ url: "https://foo.org/foo.js.map",
++ sourcesRelativeTo: "https://foo.org/foo.js.map",
++ map: map.simple,
++ sourcesResolved: ["https://foo.org/foo.js"],
++ sourcesContent: ["https://foo.org/foo.js"]
++ }, "XSSIsafe map")
++ isAsync()
++ })
++
++ method(code.absolute, codeUrl, wrap(Throws), function(error, result) {
++ t.equal(error.message, "https://foo.org/foo.js.map", "read throws")
++ t.notOk(result)
++ isAsync()
++ })
++
++ function readMap(what) {
++ return wrapMap(read(JSON.stringify(what)), identity)
++ }
++
++ var options
++
++ method(code.fileRelative, codeUrl, readMap(map.simple), function(error, result) {
++ t.error(error)
++ t.deepEqual(result.sourcesResolved, ["http://example.com/a/b/c/foo.js"], "simple")
++ t.deepEqual(result.sourcesContent, ["http://example.com/a/b/c/foo.js"], "simple")
++ isAsync()
++ })
++
++ method(code.fileRelative, codeUrl, readMap(map.sourceRoot), function(error, result) {
++ t.error(error)
++ t.deepEqual(result.sourcesResolved, [
++ "http://example.com/static/js/app/foo.js",
++ "http://example.com/static/js/app/lib/bar.js",
++ "http://example.com/static/js/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ], "sourceRoot")
++ t.deepEqual(result.sourcesContent, [
++ "http://example.com/static/js/app/foo.js",
++ "http://example.com/static/js/app/lib/bar.js",
++ "http://example.com/static/js/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ], "sourceRoot")
++ isAsync()
++ })
++
++ options = {ignoreSourceRoot: true}
++ method(code.fileRelative, codeUrl, readMap(map.sourceRoot), options, function(error, result) {
++ t.error(error)
++ t.deepEqual(result.sourcesResolved, [
++ "http://example.com/a/b/c/foo.js",
++ "http://example.com/a/b/c/lib/bar.js",
++ "http://example.com/a/b/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ], "sourceRoot")
++ t.deepEqual(result.sourcesContent, [
++ "http://example.com/a/b/c/foo.js",
++ "http://example.com/a/b/c/lib/bar.js",
++ "http://example.com/a/b/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ], "ignore sourceRoot")
++ isAsync()
++ })
++
++ method(code.fileRelative, codeUrl, readMap(map.sourceRootNoSlash), function(error, result) {
++ t.error(error)
++ t.deepEqual(result.sourcesResolved, [
++ "http://example.com/static/js/app/foo.js",
++ "http://example.com/static/js/app/lib/bar.js",
++ "http://example.com/static/js/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ], "sourceRootNoSlash")
++ t.deepEqual(result.sourcesContent, [
++ "http://example.com/static/js/app/foo.js",
++ "http://example.com/static/js/app/lib/bar.js",
++ "http://example.com/static/js/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ], "sourceRootNoSlash")
++ isAsync()
++ })
++
++ method(code.fileRelative, codeUrl, readMap(map.sourcesContent), function(error, result) {
++ t.error(error)
++ t.deepEqual(result.sourcesResolved, [
++ "http://example.com/static/js/app/foo.js",
++ "http://example.com/static/js/app/lib/bar.js",
++ "http://example.com/static/js/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ], "sourcesContent")
++ t.deepEqual(result.sourcesContent, [
++ "foo.js",
++ "lib/bar.js",
++ "../vendor/dom.js",
++ "/version.js",
++ "//foo.org/baz.js"
++ ], "sourcesContent")
++ isAsync()
++ })
++
++ method(code.fileRelative, codeUrl, readMap(map.mixed), function(error, result) {
++ t.error(error)
++ t.deepEqual(result.sourcesResolved, [
++ "http://example.com/a/b/c/foo.js",
++ "http://example.com/a/b/c/lib/bar.js",
++ "http://example.com/a/b/vendor/dom.js",
++ "http://example.com/version.js",
++ "http://foo.org/baz.js"
++ ], "mixed")
++ t.deepEqual(result.sourcesContent, [
++ "foo.js",
++ "http://example.com/a/b/c/lib/bar.js",
++ "http://example.com/a/b/vendor/dom.js",
++ "/version.js",
++ "//foo.org/baz.js"
++ ], "mixed")
++ isAsync()
++ })
++
++ method(code.fileRelative, codeUrl, wrap(read([map.simpleString])), function(error, result) {
++ t.error(error)
++ t.deepEqual(result.sourcesResolved, ["http://example.com/a/b/c/foo.js"], "read non-string")
++ t.deepEqual(result.sourcesContent, [map.simpleString], "read non-string")
++ isAsync()
++ })
++
++ function ThrowsMap(what) {
++ return wrapMap(read(JSON.stringify(what)), Throws)
++ }
++
++ var calledBack = false
++ method(code.fileRelative, codeUrl, ThrowsMap(map.mixed), function(error, result) {
++ t.equal(calledBack, false)
++ calledBack = true
++ t.equal(error.message, "http://example.com/a/b/c/lib/bar.js", "read throws")
++ t.notOk(result)
++ isAsync()
++ })
++
++ next = true
++ }
++}
++
++test(".resolve", testResolve(sourceMapResolve.resolve, false))
++
++test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true))
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/test/windows.js
+@@ -0,0 +1,166 @@
++// Copyright 2014 Simon Lydell
++// X11 (“MIT”) Licensed. (See LICENSE.)
++
++var path = require("path")
++var test = require("tape")
++var asyncify = require("simple-asyncify")
++var common = require("./common")
++var u = common.u
++var read = common.read
++var identity = common.identity
++
++var sourceMapResolve = require("../")
++
++path.sep = "\\"
++
++
++function testResolveSourceMap(method, sync) {
++ return function(t) {
++ var wrap = (sync ? identity : asyncify)
++
++ var codeUrl = "c:\\a\\b\\c\\foo.js"
++
++ t.plan(3 * 2)
++
++ if (sync) {
++ method = asyncify(method)
++ }
++
++ var map = {}
++ var readMap = wrap(read(JSON.stringify(map)))
++
++ method(u("foo.js.map"), codeUrl, readMap, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "foo.js.map",
++ url: "/a/b/c/foo.js.map",
++ sourcesRelativeTo: "/a/b/c/foo.js.map",
++ map: map
++ })
++ })
++
++ method(u("/foo.js.map"), codeUrl, readMap, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "/foo.js.map",
++ url: "/foo.js.map",
++ sourcesRelativeTo: "/foo.js.map",
++ map: map
++ })
++ })
++
++ method(u("../foo.js.map"), codeUrl, readMap, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "../foo.js.map",
++ url: "/a/b/foo.js.map",
++ sourcesRelativeTo: "/a/b/foo.js.map",
++ map: map
++ })
++ })
++
++ }
++}
++
++test(".resolveSourceMap", testResolveSourceMap(sourceMapResolve.resolveSourceMap, false))
++
++test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true))
++
++
++function testResolveSources(method, sync) {
++ return function(t) {
++ var wrap = (sync ? identity : asyncify)
++
++ var mapUrl = "c:\\a\\b\\c\\foo.js.map"
++
++ t.plan(1 * 3)
++
++ if (sync) {
++ method = asyncify(method)
++ }
++
++ var map = {
++ sources: ["foo.js", "/foo.js", "../foo.js"]
++ }
++
++ method(map, mapUrl, wrap(identity), function(error, result) {
++ t.error(error)
++ t.deepEqual(result.sourcesResolved, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"])
++ t.deepEqual(result.sourcesContent, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"])
++ })
++
++ }
++}
++
++test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false))
++
++test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true))
++
++
++function testResolve(method, sync) {
++ return function(t) {
++ var wrap = (sync ? identity : asyncify)
++ var wrapMap = function(mapFn, fn) {
++ return wrap(function(url) {
++ if (/\.map$/.test(url)) {
++ return mapFn(url)
++ }
++ return fn(url)
++ })
++ }
++
++ var codeUrl = "c:\\a\\b\\c\\foo.js"
++
++ t.plan(3 * 2)
++
++ if (sync) {
++ method = asyncify(method)
++ }
++
++ var map = {
++ sources: ["foo.js", "/foo.js", "../foo.js"]
++ }
++ var readMap = wrapMap(read(JSON.stringify(map)), identity)
++
++ method(u("foo.js.map"), codeUrl, readMap, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "foo.js.map",
++ url: "/a/b/c/foo.js.map",
++ sourcesRelativeTo: "/a/b/c/foo.js.map",
++ map: map,
++ sourcesResolved: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"],
++ sourcesContent: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"]
++ })
++ })
++
++ method(u("/foo.js.map"), codeUrl, readMap, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "/foo.js.map",
++ url: "/foo.js.map",
++ sourcesRelativeTo: "/foo.js.map",
++ map: map,
++ sourcesResolved: ["/foo.js", "/foo.js", "/foo.js"],
++ sourcesContent: ["/foo.js", "/foo.js", "/foo.js"]
++ })
++ })
++
++ method(u("../foo.js.map"), codeUrl, readMap, function(error, result) {
++ t.error(error)
++ t.deepEqual(result, {
++ sourceMappingURL: "../foo.js.map",
++ url: "/a/b/foo.js.map",
++ sourcesRelativeTo: "/a/b/foo.js.map",
++ map: map,
++ sourcesResolved: ["/a/b/foo.js", "/foo.js", "/a/foo.js"],
++ sourcesContent: ["/a/b/foo.js", "/foo.js", "/a/foo.js"]
++ })
++ })
++
++ }
++}
++
++test(".resolve", testResolve(sourceMapResolve.resolve, false))
++
++test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true))
+--- /dev/null
++++ node-css-2.1.0/node_modules/source-map-resolve/x-package.json5
+@@ -0,0 +1,83 @@
++{
++ name: "source-map-resolve",
++ version: "0.3.1",
++ author: "Simon Lydell",
++ license: "MIT",
++ description: "Resolve the source map and/or sources for a generated file.",
++ keywords: [
++ "source map",
++ "sourcemap",
++ "source",
++ "map",
++ "sourceMappingURL",
++ "resolve",
++ "resolver",
++ "locate",
++ "locator",
++ "find",
++ "finder"
++ ],
++ overlay: {
++ npm: {
++ repository: "lydell/source-map-resolve",
++ main: "lib/source-map-resolve-node.js",
++ browser: "source-map-resolve.js",
++ scripts: {
++ lint: "jshint lib/ test/",
++ unit: "node test/source-map-resolve.js && node test/windows.js",
++ test: "npm run lint && npm run unit",
++ build: "node generate-source-map-resolve.js"
++ },
++ dependencies: {
++ "source-map-url": "~0.3.0",
++ "atob": "~1.1.0",
++ "urix": "~0.1.0",
++ // resolve-url is a dependency in package.json even though it is not
++ // needed in Node.js, to allow using npm as a package manager for
++ // browser projects too.
++ "resolve-url": "~0.2.1"
++ },
++ devDependencies: {
++ "tape": "~2.5.0",
++ "jshint": "~2.4.3",
++ "setimmediate": "~1.0.1",
++ "Base64": "~0.2.0",
++ "simple-asyncify": "~0.1.0"
++ },
++ testling: {
++ files: "test/source-map-resolve.js",
++ browsers: [
++ "ie/8..latest",
++ "chrome/latest",
++ "firefox/latest",
++ "opera/12",
++ "opera/latest",
++ "safari/5",
++ "iphone/6",
++ "android-browser/4"
++ ]
++ }
++ },
++ component: {
++ repo: "lydell/source-map-resolve",
++ main: "source-map-resolve.js",
++ scripts: [
++ "source-map-resolve.js"
++ ],
++ dependencies: {
++ "lydell/source-map-url": "~0.3.0",
++ "lydell/resolve-url": "~0.2.1"
++ }
++ },
++ bower: {
++ authors: ["Simon Lydell"],
++ ignore: [
++ ".*"
++ ],
++ dependencies: {
++ "source-map-url": "~0.3.0",
++ "resolve-url": "~0.2.1"
++ }
++ }
++ }
++}
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..a62c681
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,5 @@
+0000-bundle_atob.patch
+0001-bundle_urix.patch
+0002-bundle_resolve-url.patch
+0003-bundle_source-map-url.patch
+0004-bundle_source-map-resolve.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-css.git
More information about the Pkg-javascript-commits
mailing list