├── .github
└── workflows
│ └── test.yml
├── .gitignore
├── .npmignore
├── LICENSE
├── README.md
├── index.js
├── package-lock.json
├── package.json
└── test
├── fixtures
├── group
│ ├── app.js
│ ├── index.html
│ └── style.css
├── style.alt-append.css
├── style.alt-buster.css
├── style.alt-method-hash-strong.css
├── style.alt-method-hash-weak.css
├── style.alt-postfix.css
├── style.alt-prefix.css
├── style.alt-prepend.css
└── style.css
├── main.js
└── result
├── group
├── app.js
├── index.html
└── style.css
├── style.alt-append.css
├── style.alt-buster.css
├── style.alt-method-hash-strong.css
├── style.alt-method-hash-weak.css
├── style.alt-postfix.css
├── style.alt-prefix.css
├── style.alt-prepend.css
└── style.css
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | on: [push, pull_request]
2 |
3 | name: Test and Build
4 |
5 | jobs:
6 | test:
7 | strategy:
8 | matrix:
9 | os: [ubuntu-latest]
10 | node-version: [10.x]
11 | fail-fast: false
12 |
13 | runs-on: ${{ matrix.os }}
14 |
15 | steps:
16 | - name: Checkout code
17 | uses: actions/checkout@v2
18 |
19 | - name: Install NodeJS
20 | uses: actions/setup-node@v1
21 | with:
22 | node-version: ${{ matrix.node-version }}
23 |
24 | - name: Verify versions
25 | run: node --version && npm --version && node -p process.versions.v8
26 |
27 | - name: Cache build artifacts
28 | id: cache-node
29 | uses: actions/cache@v2
30 | with:
31 | path: |
32 | ~/.npm
33 | node_modules
34 | key: ${{ runner.os }}-node-${{ matrix.node-version }}
35 |
36 | - name: Install dependencies
37 | run: npm install
38 |
39 | - name: Run tests
40 | run: npm test
41 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .DS_Store
3 | /node_modules
4 | npm-debug.log
5 | test/data/temp
6 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .DS_Store
3 | /node_modules
4 | npm-debug.log
5 | /.github
6 | /test
7 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Valerian Saliou
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # gulp-minify-css-names
2 |
3 | [](https://github.com/valeriansaliou/gulp-minify-css-names/actions?query=workflow%3A%22Test+and+Build%22) [](https://www.npmjs.com/package/gulp-minify-css-names) [](https://www.npmjs.com/package/gulp-minify-css-names) [](https://www.buymeacoffee.com/valeriansaliou)
4 |
5 | **Gulp plugin to minify CSS classes and CSS IDs.**
6 |
7 | Forked from: [gulp-minify-cssnames](https://github.com/Connormiha/gulp-minify-cssnames) from [@Connormiha](https://github.com/Connormiha).
8 |
9 | ## Usage
10 |
11 | Minifying all names(class, id) with some postfix (default: '-post-').
12 |
13 | ### Example
14 |
15 | We have css file:
16 |
17 | ```css
18 | .-pre-menu-post- {color: red;}
19 | .-pre-menu_top-post- {color: black;}
20 | .-pre-menu_item-post- {color: green;}
21 | .-pre-menu_item_active-post- {color: blue;}
22 | .-pre-menu_item_active-post-::before {content: 'active'}
23 | ```
24 |
25 | ```javascript
26 | var gulp = require('gulp');
27 | var gulpMinifyCssNames = require('gulp-minify-css-names');
28 |
29 | gulp.task('minify-css-names', function() {
30 | return gulp.src(['src/*.css'])
31 | .pipe(gulpMinifyCssNames())
32 | .pipe(gulp.dest('build'))
33 | });
34 | ```
35 |
36 | #### Result
37 |
38 | ```css
39 | .a0 {color: red;}
40 | .a1 {color: black;}
41 | .a2 {color: green;}
42 | .a3 {color: blue;}
43 | .a3::before {content: 'active'}
44 | ```
45 |
46 | ### Example2
47 |
48 | Our project has 3 files:
49 |
50 | ##### style.css
51 |
52 | ```css
53 | .-pre-menu-post- {color: red;}
54 | .-pre-menu_top-post- {color: black;}
55 | .-pre-menu_item-post- {color: green;}
56 | .-pre-menu_item_active-post- {color: blue;}
57 | .-pre-menu_item_active-post-::before {content: 'active'}
58 | ```
59 |
60 | ##### index.html
61 |
62 | ```html
63 |
64 |
65 |
66 |
67 |
68 | ```
69 | ##### app.js
70 |
71 | ```javascript
72 | var $menuItems = document.querySelectorAll('.-pre-menu_item-post-');
73 | var $mainMenu = document.querySelector('#-pre-main-menu-post-');
74 | ```
75 |
76 | ##### Gulp task
77 |
78 | ```javascript
79 | var gulp = require('gulp');
80 | var gulpMinifyCssNames = require('gulp-minify-css-names');
81 |
82 | gulp.task('minify-css-names', function() {
83 | return gulp.src(['src/style.css', 'src/index.html', 'src/app.js'])
84 | .pipe(gulpMinifyCssNames())
85 | .pipe(gulp.dest('build'))
86 | });
87 | ```
88 |
89 | #### Result
90 |
91 | style.css
92 | ```css
93 | .a0 {color: red;}
94 | .a1 {color: black;}
95 | .a2 {color: green;}
96 | .a3 {color: blue;}
97 | .a3::before {content: 'active'}
98 | ```
99 | index.html
100 | ```html
101 |
102 |
1
103 |
2
104 |
3
105 |
106 | ```
107 | app.js
108 | ```javascript
109 | var $menuItems = document.querySelectorAll('.a2');
110 | var $mainMenu = document.querySelector('#a4');
111 | ```
112 |
113 | ## API
114 |
115 | ### gulp-minify-css-names([options])
116 |
117 | #### options
118 |
119 | Type: `Object`
120 |
121 | ##### options.method
122 |
123 | Type: `String`
124 | Default: `index`
125 |
126 | CSS names minification method (either `index`, `hash-weak` or `hash-strong`).
127 | You may use the non-default `hash-*` methods to ensure generated class names are always static given the same real class name. This can be useful if you're having cache busting issues between your HTML and CSS (eg. caches out-of-sync). The `hash-weak` is a smaller 32-bits hash while the `hash-strong` is a stronger 64-bits hash (use the strong one if you have so many CSS classes that you risk hash collision).
128 |
129 | ##### options.prefix
130 |
131 | Type: `String`
132 | Default: `"-pre-"`
133 |
134 | Alternative prefix for CSS names.
135 | `Important: prefix should be valid for CSS class and ID`
136 |
137 | ##### options.postfix
138 |
139 | Type: `String`
140 | Default: `"-post-"`
141 |
142 | Alternative postfix for CSS names.
143 | `Important: postfix should be valid for CSS class and ID`
144 |
145 | ##### options.prepend
146 |
147 | Type: `String`
148 | Default: `"a"`
149 |
150 | Post-processing: prepend given string to transformed CSS class and ID.
151 | `Important: prepend should be valid for CSS class and ID`
152 |
153 | ##### options.append
154 |
155 | Type: `String`
156 | Default: `""`
157 |
158 | Post-processing: append given string to transformed CSS class and ID.
159 | `Important: append should be valid for CSS class and ID`
160 |
161 | ##### options.buster
162 |
163 | Type: `String`
164 | Default: `""`
165 |
166 | Hash buster: concatenate the value to hash with given buster value. Can be used to change all hashes at the same time.
167 | `Requires: method to be a hash method`
168 |
169 | ##### options.slice
170 |
171 | Type: `Number`
172 | Default: `-1`
173 |
174 | Slice minified name: limit the final minified to provided length. This can be used to pick the first values of the hash (removing the last characters) and thus reduce the final size of the CSS file even more. As this reduces entropy on the final values, the collision detector may (or may not) kick in, especially if you have a lot of different CSS names.
175 |
176 | ##### options.dryRun
177 |
178 | Type: `Boolean`
179 | Default: `false`
180 |
181 | Minification dry-run: this will compute minified CSS class names, check for collisions and error out if an issue arise, but will not replace actual class names in the output. This can be used in development environments to simulate the behavior of the library without altering original class names, and easily switch it on and off to test things out.
182 |
183 | ### Why need a prefix/append?
184 |
185 | This plugin match by RegExp in all file/stream content. This will reduce the likelihood of wrong replacement.
186 |
187 | [npm-url]: https://npmjs.org/package/gulp-minify-css-names
188 | [npm-image]: https://img.shields.io/npm/v/gulp-minify-css-names.svg
189 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | var Transform = require("readable-stream/transform");
4 | var rs = require("replacestream");
5 | var farmhash = require("farmhash");
6 |
7 | var Replacer = function(options) {
8 | var method = (options.method !== undefined ? options.method : "index");
9 |
10 | var prefix = (options.prefix !== undefined ? options.prefix : "-pre-");
11 | var postfix = (options.postfix !== undefined ? options.postfix : "-post-");
12 |
13 | var prepend = (options.prepend !== undefined ? options.prepend : "a");
14 | var append = (options.append !== undefined ? options.append : "");
15 |
16 | var buster = (options.buster !== undefined ? options.buster : "");
17 | var slice = (options.slice !== undefined ? options.slice : -1);
18 |
19 | var dryRun = (options.dryRun !== undefined ? options.dryRun : false);
20 |
21 | var currentIndex = 0;
22 | var namesMap = {};
23 | var reverseMap = {};
24 |
25 | this.regExp = new RegExp(prefix + "([a-zA-Z0-9_-]*)" + postfix, "g");
26 |
27 | this.replaceFn = function(str) {
28 | if (!namesMap[str]) {
29 | var number;
30 |
31 | switch (method) {
32 | case "hash-weak":
33 | case "hash-strong": {
34 | var fnHasher = (method === "hash-weak" ? farmhash.hash32 : farmhash.hash64);
35 | number = (+fnHasher(buster + str));
36 | break;
37 | }
38 | default: {
39 | number = currentIndex++;
40 | }
41 | }
42 |
43 | var minified = number.toString(36);
44 |
45 | if (slice > 0 && minified.length > slice) {
46 | minified = minified.substring(0, slice);
47 | }
48 |
49 | // Check collisions (ensure builds relying on an hasher are collision-safe)
50 | if (!reverseMap[minified]) {
51 | reverseMap[minified] = str;
52 | } else if (reverseMap[minified] !== str) {
53 | throw new Error("Collision detected for class: " + str + " - aborting");
54 | }
55 |
56 | namesMap[str] = prepend + minified + append;
57 | }
58 |
59 | return (dryRun === true) ? str : namesMap[str];
60 | };
61 | };
62 |
63 | module.exports = function(options) {
64 | options = options || {};
65 | var replacer = new Replacer(options);
66 |
67 | return new Transform({
68 | objectMode: true,
69 | transform: function(file, enc, callback) {
70 | if (file.isStream()) {
71 | file.contents = file.contents.pipe(rs(replacer.regExp, replacer.replaceFn));
72 | return callback(null, file);
73 | }
74 |
75 | if (file.isBuffer()) {
76 | file.contents = Buffer.from(String(file.contents).replace(replacer.regExp, replacer.replaceFn));
77 |
78 | return callback(null, file);
79 | }
80 |
81 | callback(null, file);
82 | }
83 | });
84 | };
85 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gulp-minify-css-names",
3 | "version": "2.1.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "ansi-gray": {
8 | "version": "0.1.1",
9 | "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
10 | "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
11 | "dev": true,
12 | "requires": {
13 | "ansi-wrap": "0.1.0"
14 | }
15 | },
16 | "ansi-regex": {
17 | "version": "2.1.1",
18 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
19 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
20 | },
21 | "ansi-styles": {
22 | "version": "2.2.1",
23 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
24 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
25 | "dev": true
26 | },
27 | "ansi-wrap": {
28 | "version": "0.1.0",
29 | "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
30 | "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
31 | "dev": true
32 | },
33 | "aproba": {
34 | "version": "1.2.0",
35 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
36 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
37 | },
38 | "archy": {
39 | "version": "1.0.0",
40 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
41 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
42 | "dev": true
43 | },
44 | "are-we-there-yet": {
45 | "version": "1.1.7",
46 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
47 | "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
48 | "requires": {
49 | "delegates": "^1.0.0",
50 | "readable-stream": "^2.0.6"
51 | }
52 | },
53 | "arr-diff": {
54 | "version": "4.0.0",
55 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
56 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
57 | "dev": true
58 | },
59 | "arr-flatten": {
60 | "version": "1.1.0",
61 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
62 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
63 | "dev": true
64 | },
65 | "arr-union": {
66 | "version": "3.1.0",
67 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
68 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
69 | "dev": true
70 | },
71 | "array-differ": {
72 | "version": "1.0.0",
73 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
74 | "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
75 | "dev": true
76 | },
77 | "array-each": {
78 | "version": "1.0.1",
79 | "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
80 | "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
81 | "dev": true
82 | },
83 | "array-slice": {
84 | "version": "1.1.0",
85 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
86 | "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
87 | "dev": true
88 | },
89 | "array-uniq": {
90 | "version": "1.0.3",
91 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
92 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
93 | "dev": true
94 | },
95 | "array-unique": {
96 | "version": "0.3.2",
97 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
98 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
99 | "dev": true
100 | },
101 | "assertion-error": {
102 | "version": "1.1.0",
103 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
104 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
105 | "dev": true
106 | },
107 | "assign-symbols": {
108 | "version": "1.0.0",
109 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
110 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
111 | "dev": true
112 | },
113 | "atob": {
114 | "version": "2.1.2",
115 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
116 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
117 | "dev": true
118 | },
119 | "balanced-match": {
120 | "version": "1.0.2",
121 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
122 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
123 | "dev": true
124 | },
125 | "base": {
126 | "version": "0.11.2",
127 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
128 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
129 | "dev": true,
130 | "requires": {
131 | "cache-base": "^1.0.1",
132 | "class-utils": "^0.3.5",
133 | "component-emitter": "^1.2.1",
134 | "define-property": "^1.0.0",
135 | "isobject": "^3.0.1",
136 | "mixin-deep": "^1.2.0",
137 | "pascalcase": "^0.1.1"
138 | },
139 | "dependencies": {
140 | "define-property": {
141 | "version": "1.0.0",
142 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
143 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
144 | "dev": true,
145 | "requires": {
146 | "is-descriptor": "^1.0.0"
147 | }
148 | },
149 | "is-accessor-descriptor": {
150 | "version": "1.0.0",
151 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
152 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
153 | "dev": true,
154 | "requires": {
155 | "kind-of": "^6.0.0"
156 | }
157 | },
158 | "is-data-descriptor": {
159 | "version": "1.0.0",
160 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
161 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
162 | "dev": true,
163 | "requires": {
164 | "kind-of": "^6.0.0"
165 | }
166 | },
167 | "is-descriptor": {
168 | "version": "1.0.2",
169 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
170 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
171 | "dev": true,
172 | "requires": {
173 | "is-accessor-descriptor": "^1.0.0",
174 | "is-data-descriptor": "^1.0.0",
175 | "kind-of": "^6.0.2"
176 | }
177 | }
178 | }
179 | },
180 | "base64-js": {
181 | "version": "1.5.1",
182 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
183 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
184 | },
185 | "beeper": {
186 | "version": "1.1.1",
187 | "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
188 | "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
189 | "dev": true
190 | },
191 | "bl": {
192 | "version": "4.1.0",
193 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
194 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
195 | "requires": {
196 | "buffer": "^5.5.0",
197 | "inherits": "^2.0.4",
198 | "readable-stream": "^3.4.0"
199 | },
200 | "dependencies": {
201 | "readable-stream": {
202 | "version": "3.6.0",
203 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
204 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
205 | "requires": {
206 | "inherits": "^2.0.3",
207 | "string_decoder": "^1.1.1",
208 | "util-deprecate": "^1.0.1"
209 | }
210 | }
211 | }
212 | },
213 | "brace-expansion": {
214 | "version": "1.1.11",
215 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
216 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
217 | "dev": true,
218 | "requires": {
219 | "balanced-match": "^1.0.0",
220 | "concat-map": "0.0.1"
221 | }
222 | },
223 | "braces": {
224 | "version": "2.3.2",
225 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
226 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
227 | "dev": true,
228 | "requires": {
229 | "arr-flatten": "^1.1.0",
230 | "array-unique": "^0.3.2",
231 | "extend-shallow": "^2.0.1",
232 | "fill-range": "^4.0.0",
233 | "isobject": "^3.0.1",
234 | "repeat-element": "^1.1.2",
235 | "snapdragon": "^0.8.1",
236 | "snapdragon-node": "^2.0.1",
237 | "split-string": "^3.0.2",
238 | "to-regex": "^3.0.1"
239 | },
240 | "dependencies": {
241 | "extend-shallow": {
242 | "version": "2.0.1",
243 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
244 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
245 | "dev": true,
246 | "requires": {
247 | "is-extendable": "^0.1.0"
248 | }
249 | }
250 | }
251 | },
252 | "buffer": {
253 | "version": "5.7.1",
254 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
255 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
256 | "requires": {
257 | "base64-js": "^1.3.1",
258 | "ieee754": "^1.1.13"
259 | }
260 | },
261 | "buffer-from": {
262 | "version": "1.1.2",
263 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
264 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
265 | "dev": true
266 | },
267 | "cache-base": {
268 | "version": "1.0.1",
269 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
270 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
271 | "dev": true,
272 | "requires": {
273 | "collection-visit": "^1.0.0",
274 | "component-emitter": "^1.2.1",
275 | "get-value": "^2.0.6",
276 | "has-value": "^1.0.0",
277 | "isobject": "^3.0.1",
278 | "set-value": "^2.0.0",
279 | "to-object-path": "^0.3.0",
280 | "union-value": "^1.0.0",
281 | "unset-value": "^1.0.0"
282 | }
283 | },
284 | "chai": {
285 | "version": "3.5.0",
286 | "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz",
287 | "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=",
288 | "dev": true,
289 | "requires": {
290 | "assertion-error": "^1.0.1",
291 | "deep-eql": "^0.1.3",
292 | "type-detect": "^1.0.0"
293 | }
294 | },
295 | "chalk": {
296 | "version": "1.1.3",
297 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
298 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
299 | "dev": true,
300 | "requires": {
301 | "ansi-styles": "^2.2.1",
302 | "escape-string-regexp": "^1.0.2",
303 | "has-ansi": "^2.0.0",
304 | "strip-ansi": "^3.0.0",
305 | "supports-color": "^2.0.0"
306 | }
307 | },
308 | "chownr": {
309 | "version": "1.1.4",
310 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
311 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
312 | },
313 | "class-utils": {
314 | "version": "0.3.6",
315 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
316 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
317 | "dev": true,
318 | "requires": {
319 | "arr-union": "^3.1.0",
320 | "define-property": "^0.2.5",
321 | "isobject": "^3.0.0",
322 | "static-extend": "^0.1.1"
323 | },
324 | "dependencies": {
325 | "define-property": {
326 | "version": "0.2.5",
327 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
328 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
329 | "dev": true,
330 | "requires": {
331 | "is-descriptor": "^0.1.0"
332 | }
333 | }
334 | }
335 | },
336 | "clone": {
337 | "version": "1.0.4",
338 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
339 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
340 | "dev": true
341 | },
342 | "clone-stats": {
343 | "version": "0.0.1",
344 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
345 | "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
346 | "dev": true
347 | },
348 | "code-point-at": {
349 | "version": "1.1.0",
350 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
351 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
352 | },
353 | "collection-visit": {
354 | "version": "1.0.0",
355 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
356 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
357 | "dev": true,
358 | "requires": {
359 | "map-visit": "^1.0.0",
360 | "object-visit": "^1.0.0"
361 | }
362 | },
363 | "color-support": {
364 | "version": "1.1.3",
365 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
366 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
367 | "dev": true
368 | },
369 | "commander": {
370 | "version": "2.3.0",
371 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz",
372 | "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=",
373 | "dev": true
374 | },
375 | "component-emitter": {
376 | "version": "1.3.0",
377 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
378 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
379 | "dev": true
380 | },
381 | "concat-map": {
382 | "version": "0.0.1",
383 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
384 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
385 | "dev": true
386 | },
387 | "concat-stream": {
388 | "version": "1.6.2",
389 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
390 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
391 | "dev": true,
392 | "requires": {
393 | "buffer-from": "^1.0.0",
394 | "inherits": "^2.0.3",
395 | "readable-stream": "^2.2.2",
396 | "typedarray": "^0.0.6"
397 | }
398 | },
399 | "console-control-strings": {
400 | "version": "1.1.0",
401 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
402 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
403 | },
404 | "copy-descriptor": {
405 | "version": "0.1.1",
406 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
407 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
408 | "dev": true
409 | },
410 | "core-util-is": {
411 | "version": "1.0.3",
412 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
413 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
414 | },
415 | "dateformat": {
416 | "version": "2.2.0",
417 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
418 | "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=",
419 | "dev": true
420 | },
421 | "debug": {
422 | "version": "2.6.9",
423 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
424 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
425 | "dev": true,
426 | "requires": {
427 | "ms": "2.0.0"
428 | }
429 | },
430 | "decode-uri-component": {
431 | "version": "0.2.0",
432 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
433 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
434 | "dev": true
435 | },
436 | "decompress-response": {
437 | "version": "4.2.1",
438 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
439 | "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
440 | "requires": {
441 | "mimic-response": "^2.0.0"
442 | }
443 | },
444 | "deep-eql": {
445 | "version": "0.1.3",
446 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz",
447 | "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=",
448 | "dev": true,
449 | "requires": {
450 | "type-detect": "0.1.1"
451 | },
452 | "dependencies": {
453 | "type-detect": {
454 | "version": "0.1.1",
455 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz",
456 | "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=",
457 | "dev": true
458 | }
459 | }
460 | },
461 | "deep-extend": {
462 | "version": "0.6.0",
463 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
464 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
465 | },
466 | "defaults": {
467 | "version": "1.0.3",
468 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
469 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
470 | "dev": true,
471 | "requires": {
472 | "clone": "^1.0.2"
473 | }
474 | },
475 | "define-property": {
476 | "version": "2.0.2",
477 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
478 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
479 | "dev": true,
480 | "requires": {
481 | "is-descriptor": "^1.0.2",
482 | "isobject": "^3.0.1"
483 | },
484 | "dependencies": {
485 | "is-accessor-descriptor": {
486 | "version": "1.0.0",
487 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
488 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
489 | "dev": true,
490 | "requires": {
491 | "kind-of": "^6.0.0"
492 | }
493 | },
494 | "is-data-descriptor": {
495 | "version": "1.0.0",
496 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
497 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
498 | "dev": true,
499 | "requires": {
500 | "kind-of": "^6.0.0"
501 | }
502 | },
503 | "is-descriptor": {
504 | "version": "1.0.2",
505 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
506 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
507 | "dev": true,
508 | "requires": {
509 | "is-accessor-descriptor": "^1.0.0",
510 | "is-data-descriptor": "^1.0.0",
511 | "kind-of": "^6.0.2"
512 | }
513 | }
514 | }
515 | },
516 | "delegates": {
517 | "version": "1.0.0",
518 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
519 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
520 | },
521 | "deprecated": {
522 | "version": "0.0.1",
523 | "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz",
524 | "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=",
525 | "dev": true
526 | },
527 | "detect-file": {
528 | "version": "1.0.0",
529 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
530 | "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
531 | "dev": true
532 | },
533 | "detect-libc": {
534 | "version": "1.0.3",
535 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
536 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
537 | },
538 | "diff": {
539 | "version": "1.4.0",
540 | "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
541 | "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=",
542 | "dev": true
543 | },
544 | "duplexer2": {
545 | "version": "0.0.2",
546 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
547 | "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
548 | "dev": true,
549 | "requires": {
550 | "readable-stream": "~1.1.9"
551 | },
552 | "dependencies": {
553 | "isarray": {
554 | "version": "0.0.1",
555 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
556 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
557 | "dev": true
558 | },
559 | "readable-stream": {
560 | "version": "1.1.14",
561 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
562 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
563 | "dev": true,
564 | "requires": {
565 | "core-util-is": "~1.0.0",
566 | "inherits": "~2.0.1",
567 | "isarray": "0.0.1",
568 | "string_decoder": "~0.10.x"
569 | }
570 | },
571 | "string_decoder": {
572 | "version": "0.10.31",
573 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
574 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
575 | "dev": true
576 | }
577 | }
578 | },
579 | "end-of-stream": {
580 | "version": "1.4.4",
581 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
582 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
583 | "requires": {
584 | "once": "^1.4.0"
585 | }
586 | },
587 | "escape-string-regexp": {
588 | "version": "1.0.5",
589 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
590 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
591 | },
592 | "expand-brackets": {
593 | "version": "2.1.4",
594 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
595 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
596 | "dev": true,
597 | "requires": {
598 | "debug": "^2.3.3",
599 | "define-property": "^0.2.5",
600 | "extend-shallow": "^2.0.1",
601 | "posix-character-classes": "^0.1.0",
602 | "regex-not": "^1.0.0",
603 | "snapdragon": "^0.8.1",
604 | "to-regex": "^3.0.1"
605 | },
606 | "dependencies": {
607 | "define-property": {
608 | "version": "0.2.5",
609 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
610 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
611 | "dev": true,
612 | "requires": {
613 | "is-descriptor": "^0.1.0"
614 | }
615 | },
616 | "extend-shallow": {
617 | "version": "2.0.1",
618 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
619 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
620 | "dev": true,
621 | "requires": {
622 | "is-extendable": "^0.1.0"
623 | }
624 | }
625 | }
626 | },
627 | "expand-template": {
628 | "version": "2.0.3",
629 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
630 | "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="
631 | },
632 | "expand-tilde": {
633 | "version": "2.0.2",
634 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
635 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
636 | "dev": true,
637 | "requires": {
638 | "homedir-polyfill": "^1.0.1"
639 | }
640 | },
641 | "extend": {
642 | "version": "3.0.2",
643 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
644 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
645 | "dev": true
646 | },
647 | "extend-shallow": {
648 | "version": "3.0.2",
649 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
650 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
651 | "dev": true,
652 | "requires": {
653 | "assign-symbols": "^1.0.0",
654 | "is-extendable": "^1.0.1"
655 | },
656 | "dependencies": {
657 | "is-extendable": {
658 | "version": "1.0.1",
659 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
660 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
661 | "dev": true,
662 | "requires": {
663 | "is-plain-object": "^2.0.4"
664 | }
665 | }
666 | }
667 | },
668 | "extglob": {
669 | "version": "2.0.4",
670 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
671 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
672 | "dev": true,
673 | "requires": {
674 | "array-unique": "^0.3.2",
675 | "define-property": "^1.0.0",
676 | "expand-brackets": "^2.1.4",
677 | "extend-shallow": "^2.0.1",
678 | "fragment-cache": "^0.2.1",
679 | "regex-not": "^1.0.0",
680 | "snapdragon": "^0.8.1",
681 | "to-regex": "^3.0.1"
682 | },
683 | "dependencies": {
684 | "define-property": {
685 | "version": "1.0.0",
686 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
687 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
688 | "dev": true,
689 | "requires": {
690 | "is-descriptor": "^1.0.0"
691 | }
692 | },
693 | "extend-shallow": {
694 | "version": "2.0.1",
695 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
696 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
697 | "dev": true,
698 | "requires": {
699 | "is-extendable": "^0.1.0"
700 | }
701 | },
702 | "is-accessor-descriptor": {
703 | "version": "1.0.0",
704 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
705 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
706 | "dev": true,
707 | "requires": {
708 | "kind-of": "^6.0.0"
709 | }
710 | },
711 | "is-data-descriptor": {
712 | "version": "1.0.0",
713 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
714 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
715 | "dev": true,
716 | "requires": {
717 | "kind-of": "^6.0.0"
718 | }
719 | },
720 | "is-descriptor": {
721 | "version": "1.0.2",
722 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
723 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
724 | "dev": true,
725 | "requires": {
726 | "is-accessor-descriptor": "^1.0.0",
727 | "is-data-descriptor": "^1.0.0",
728 | "kind-of": "^6.0.2"
729 | }
730 | }
731 | }
732 | },
733 | "fancy-log": {
734 | "version": "1.3.3",
735 | "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
736 | "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
737 | "dev": true,
738 | "requires": {
739 | "ansi-gray": "^0.1.1",
740 | "color-support": "^1.1.3",
741 | "parse-node-version": "^1.0.0",
742 | "time-stamp": "^1.0.0"
743 | }
744 | },
745 | "farmhash": {
746 | "version": "3.2.1",
747 | "resolved": "https://registry.npmjs.org/farmhash/-/farmhash-3.2.1.tgz",
748 | "integrity": "sha512-WCJKzFIndN6J/iesO/aHEtr772M3IQpwkwzEQK8rRMI+H+LBpi+VW8qWroXKnZmGDlHwbR0mMzEr2Eov5Jx/Pg==",
749 | "requires": {
750 | "node-addon-api": "^3.1.0",
751 | "prebuild-install": "^6.0.1"
752 | }
753 | },
754 | "fill-range": {
755 | "version": "4.0.0",
756 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
757 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
758 | "dev": true,
759 | "requires": {
760 | "extend-shallow": "^2.0.1",
761 | "is-number": "^3.0.0",
762 | "repeat-string": "^1.6.1",
763 | "to-regex-range": "^2.1.0"
764 | },
765 | "dependencies": {
766 | "extend-shallow": {
767 | "version": "2.0.1",
768 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
769 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
770 | "dev": true,
771 | "requires": {
772 | "is-extendable": "^0.1.0"
773 | }
774 | }
775 | }
776 | },
777 | "find-index": {
778 | "version": "0.1.1",
779 | "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz",
780 | "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=",
781 | "dev": true
782 | },
783 | "findup-sync": {
784 | "version": "2.0.0",
785 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
786 | "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
787 | "dev": true,
788 | "requires": {
789 | "detect-file": "^1.0.0",
790 | "is-glob": "^3.1.0",
791 | "micromatch": "^3.0.4",
792 | "resolve-dir": "^1.0.1"
793 | }
794 | },
795 | "fined": {
796 | "version": "1.2.0",
797 | "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
798 | "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
799 | "dev": true,
800 | "requires": {
801 | "expand-tilde": "^2.0.2",
802 | "is-plain-object": "^2.0.3",
803 | "object.defaults": "^1.1.0",
804 | "object.pick": "^1.2.0",
805 | "parse-filepath": "^1.0.1"
806 | }
807 | },
808 | "first-chunk-stream": {
809 | "version": "1.0.0",
810 | "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
811 | "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=",
812 | "dev": true
813 | },
814 | "flagged-respawn": {
815 | "version": "1.0.1",
816 | "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
817 | "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
818 | "dev": true
819 | },
820 | "for-in": {
821 | "version": "1.0.2",
822 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
823 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
824 | "dev": true
825 | },
826 | "for-own": {
827 | "version": "1.0.0",
828 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
829 | "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
830 | "dev": true,
831 | "requires": {
832 | "for-in": "^1.0.1"
833 | }
834 | },
835 | "fragment-cache": {
836 | "version": "0.2.1",
837 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
838 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
839 | "dev": true,
840 | "requires": {
841 | "map-cache": "^0.2.2"
842 | }
843 | },
844 | "fs-constants": {
845 | "version": "1.0.0",
846 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
847 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
848 | },
849 | "function-bind": {
850 | "version": "1.1.1",
851 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
852 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
853 | "dev": true
854 | },
855 | "gauge": {
856 | "version": "2.7.4",
857 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
858 | "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
859 | "requires": {
860 | "aproba": "^1.0.3",
861 | "console-control-strings": "^1.0.0",
862 | "has-unicode": "^2.0.0",
863 | "object-assign": "^4.1.0",
864 | "signal-exit": "^3.0.0",
865 | "string-width": "^1.0.1",
866 | "strip-ansi": "^3.0.1",
867 | "wide-align": "^1.1.0"
868 | }
869 | },
870 | "gaze": {
871 | "version": "0.5.2",
872 | "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
873 | "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
874 | "dev": true,
875 | "requires": {
876 | "globule": "~0.1.0"
877 | }
878 | },
879 | "get-value": {
880 | "version": "2.0.6",
881 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
882 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
883 | "dev": true
884 | },
885 | "github-from-package": {
886 | "version": "0.0.0",
887 | "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
888 | "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4="
889 | },
890 | "glob": {
891 | "version": "4.5.3",
892 | "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
893 | "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
894 | "dev": true,
895 | "requires": {
896 | "inflight": "^1.0.4",
897 | "inherits": "2",
898 | "minimatch": "^2.0.1",
899 | "once": "^1.3.0"
900 | }
901 | },
902 | "glob-stream": {
903 | "version": "3.1.18",
904 | "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz",
905 | "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=",
906 | "dev": true,
907 | "requires": {
908 | "glob": "^4.3.1",
909 | "glob2base": "^0.0.12",
910 | "minimatch": "^2.0.1",
911 | "ordered-read-streams": "^0.1.0",
912 | "through2": "^0.6.1",
913 | "unique-stream": "^1.0.0"
914 | },
915 | "dependencies": {
916 | "isarray": {
917 | "version": "0.0.1",
918 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
919 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
920 | "dev": true
921 | },
922 | "readable-stream": {
923 | "version": "1.0.34",
924 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
925 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
926 | "dev": true,
927 | "requires": {
928 | "core-util-is": "~1.0.0",
929 | "inherits": "~2.0.1",
930 | "isarray": "0.0.1",
931 | "string_decoder": "~0.10.x"
932 | }
933 | },
934 | "string_decoder": {
935 | "version": "0.10.31",
936 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
937 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
938 | "dev": true
939 | },
940 | "through2": {
941 | "version": "0.6.5",
942 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
943 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
944 | "dev": true,
945 | "requires": {
946 | "readable-stream": ">=1.0.33-1 <1.1.0-0",
947 | "xtend": ">=4.0.0 <4.1.0-0"
948 | }
949 | }
950 | }
951 | },
952 | "glob-watcher": {
953 | "version": "0.0.6",
954 | "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz",
955 | "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=",
956 | "dev": true,
957 | "requires": {
958 | "gaze": "^0.5.1"
959 | }
960 | },
961 | "glob2base": {
962 | "version": "0.0.12",
963 | "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
964 | "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
965 | "dev": true,
966 | "requires": {
967 | "find-index": "^0.1.1"
968 | }
969 | },
970 | "global-modules": {
971 | "version": "1.0.0",
972 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
973 | "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
974 | "dev": true,
975 | "requires": {
976 | "global-prefix": "^1.0.1",
977 | "is-windows": "^1.0.1",
978 | "resolve-dir": "^1.0.0"
979 | }
980 | },
981 | "global-prefix": {
982 | "version": "1.0.2",
983 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
984 | "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
985 | "dev": true,
986 | "requires": {
987 | "expand-tilde": "^2.0.2",
988 | "homedir-polyfill": "^1.0.1",
989 | "ini": "^1.3.4",
990 | "is-windows": "^1.0.1",
991 | "which": "^1.2.14"
992 | }
993 | },
994 | "globule": {
995 | "version": "0.1.0",
996 | "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
997 | "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
998 | "dev": true,
999 | "requires": {
1000 | "glob": "~3.1.21",
1001 | "lodash": "~1.0.1",
1002 | "minimatch": "~0.2.11"
1003 | },
1004 | "dependencies": {
1005 | "glob": {
1006 | "version": "3.1.21",
1007 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
1008 | "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
1009 | "dev": true,
1010 | "requires": {
1011 | "graceful-fs": "~1.2.0",
1012 | "inherits": "1",
1013 | "minimatch": "~0.2.11"
1014 | }
1015 | },
1016 | "graceful-fs": {
1017 | "version": "1.2.3",
1018 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
1019 | "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
1020 | "dev": true
1021 | },
1022 | "inherits": {
1023 | "version": "1.0.2",
1024 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
1025 | "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
1026 | "dev": true
1027 | },
1028 | "minimatch": {
1029 | "version": "0.2.14",
1030 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
1031 | "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
1032 | "dev": true,
1033 | "requires": {
1034 | "lru-cache": "2",
1035 | "sigmund": "~1.0.0"
1036 | }
1037 | }
1038 | }
1039 | },
1040 | "glogg": {
1041 | "version": "1.0.2",
1042 | "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
1043 | "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
1044 | "dev": true,
1045 | "requires": {
1046 | "sparkles": "^1.0.0"
1047 | }
1048 | },
1049 | "graceful-fs": {
1050 | "version": "3.0.12",
1051 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz",
1052 | "integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==",
1053 | "dev": true,
1054 | "requires": {
1055 | "natives": "^1.1.3"
1056 | }
1057 | },
1058 | "growl": {
1059 | "version": "1.9.2",
1060 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
1061 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
1062 | "dev": true
1063 | },
1064 | "gulp": {
1065 | "version": "3.9.1",
1066 | "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz",
1067 | "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=",
1068 | "dev": true,
1069 | "requires": {
1070 | "archy": "^1.0.0",
1071 | "chalk": "^1.0.0",
1072 | "deprecated": "^0.0.1",
1073 | "gulp-util": "^3.0.0",
1074 | "interpret": "^1.0.0",
1075 | "liftoff": "^2.1.0",
1076 | "minimist": "^1.1.0",
1077 | "orchestrator": "^0.3.0",
1078 | "pretty-hrtime": "^1.0.0",
1079 | "semver": "^4.1.0",
1080 | "tildify": "^1.0.0",
1081 | "v8flags": "^2.0.2",
1082 | "vinyl-fs": "^0.3.0"
1083 | },
1084 | "dependencies": {
1085 | "semver": {
1086 | "version": "4.3.6",
1087 | "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
1088 | "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
1089 | "dev": true
1090 | }
1091 | }
1092 | },
1093 | "gulp-util": {
1094 | "version": "3.0.8",
1095 | "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
1096 | "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
1097 | "dev": true,
1098 | "requires": {
1099 | "array-differ": "^1.0.0",
1100 | "array-uniq": "^1.0.2",
1101 | "beeper": "^1.0.0",
1102 | "chalk": "^1.0.0",
1103 | "dateformat": "^2.0.0",
1104 | "fancy-log": "^1.1.0",
1105 | "gulplog": "^1.0.0",
1106 | "has-gulplog": "^0.1.0",
1107 | "lodash._reescape": "^3.0.0",
1108 | "lodash._reevaluate": "^3.0.0",
1109 | "lodash._reinterpolate": "^3.0.0",
1110 | "lodash.template": "^3.0.0",
1111 | "minimist": "^1.1.0",
1112 | "multipipe": "^0.1.2",
1113 | "object-assign": "^3.0.0",
1114 | "replace-ext": "0.0.1",
1115 | "through2": "^2.0.0",
1116 | "vinyl": "^0.5.0"
1117 | },
1118 | "dependencies": {
1119 | "object-assign": {
1120 | "version": "3.0.0",
1121 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
1122 | "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
1123 | "dev": true
1124 | },
1125 | "vinyl": {
1126 | "version": "0.5.3",
1127 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
1128 | "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
1129 | "dev": true,
1130 | "requires": {
1131 | "clone": "^1.0.0",
1132 | "clone-stats": "^0.0.1",
1133 | "replace-ext": "0.0.1"
1134 | }
1135 | }
1136 | }
1137 | },
1138 | "gulplog": {
1139 | "version": "1.0.0",
1140 | "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
1141 | "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
1142 | "dev": true,
1143 | "requires": {
1144 | "glogg": "^1.0.0"
1145 | }
1146 | },
1147 | "has": {
1148 | "version": "1.0.3",
1149 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1150 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1151 | "dev": true,
1152 | "requires": {
1153 | "function-bind": "^1.1.1"
1154 | }
1155 | },
1156 | "has-ansi": {
1157 | "version": "2.0.0",
1158 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
1159 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
1160 | "dev": true,
1161 | "requires": {
1162 | "ansi-regex": "^2.0.0"
1163 | }
1164 | },
1165 | "has-gulplog": {
1166 | "version": "0.1.0",
1167 | "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
1168 | "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
1169 | "dev": true,
1170 | "requires": {
1171 | "sparkles": "^1.0.0"
1172 | }
1173 | },
1174 | "has-unicode": {
1175 | "version": "2.0.1",
1176 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
1177 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
1178 | },
1179 | "has-value": {
1180 | "version": "1.0.0",
1181 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
1182 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
1183 | "dev": true,
1184 | "requires": {
1185 | "get-value": "^2.0.6",
1186 | "has-values": "^1.0.0",
1187 | "isobject": "^3.0.0"
1188 | }
1189 | },
1190 | "has-values": {
1191 | "version": "1.0.0",
1192 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
1193 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
1194 | "dev": true,
1195 | "requires": {
1196 | "is-number": "^3.0.0",
1197 | "kind-of": "^4.0.0"
1198 | },
1199 | "dependencies": {
1200 | "kind-of": {
1201 | "version": "4.0.0",
1202 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
1203 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
1204 | "dev": true,
1205 | "requires": {
1206 | "is-buffer": "^1.1.5"
1207 | }
1208 | }
1209 | }
1210 | },
1211 | "homedir-polyfill": {
1212 | "version": "1.0.3",
1213 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
1214 | "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
1215 | "dev": true,
1216 | "requires": {
1217 | "parse-passwd": "^1.0.0"
1218 | }
1219 | },
1220 | "ieee754": {
1221 | "version": "1.2.1",
1222 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
1223 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
1224 | },
1225 | "inflight": {
1226 | "version": "1.0.6",
1227 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1228 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1229 | "dev": true,
1230 | "requires": {
1231 | "once": "^1.3.0",
1232 | "wrappy": "1"
1233 | }
1234 | },
1235 | "inherits": {
1236 | "version": "2.0.4",
1237 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1238 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1239 | },
1240 | "ini": {
1241 | "version": "1.3.8",
1242 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
1243 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
1244 | },
1245 | "interpret": {
1246 | "version": "1.4.0",
1247 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
1248 | "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
1249 | "dev": true
1250 | },
1251 | "is-absolute": {
1252 | "version": "1.0.0",
1253 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
1254 | "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
1255 | "dev": true,
1256 | "requires": {
1257 | "is-relative": "^1.0.0",
1258 | "is-windows": "^1.0.1"
1259 | }
1260 | },
1261 | "is-accessor-descriptor": {
1262 | "version": "0.1.6",
1263 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
1264 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
1265 | "dev": true,
1266 | "requires": {
1267 | "kind-of": "^3.0.2"
1268 | },
1269 | "dependencies": {
1270 | "kind-of": {
1271 | "version": "3.2.2",
1272 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1273 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1274 | "dev": true,
1275 | "requires": {
1276 | "is-buffer": "^1.1.5"
1277 | }
1278 | }
1279 | }
1280 | },
1281 | "is-buffer": {
1282 | "version": "1.1.6",
1283 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
1284 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
1285 | "dev": true
1286 | },
1287 | "is-core-module": {
1288 | "version": "2.8.0",
1289 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
1290 | "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
1291 | "dev": true,
1292 | "requires": {
1293 | "has": "^1.0.3"
1294 | }
1295 | },
1296 | "is-data-descriptor": {
1297 | "version": "0.1.4",
1298 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
1299 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
1300 | "dev": true,
1301 | "requires": {
1302 | "kind-of": "^3.0.2"
1303 | },
1304 | "dependencies": {
1305 | "kind-of": {
1306 | "version": "3.2.2",
1307 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1308 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1309 | "dev": true,
1310 | "requires": {
1311 | "is-buffer": "^1.1.5"
1312 | }
1313 | }
1314 | }
1315 | },
1316 | "is-descriptor": {
1317 | "version": "0.1.6",
1318 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
1319 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
1320 | "dev": true,
1321 | "requires": {
1322 | "is-accessor-descriptor": "^0.1.6",
1323 | "is-data-descriptor": "^0.1.4",
1324 | "kind-of": "^5.0.0"
1325 | },
1326 | "dependencies": {
1327 | "kind-of": {
1328 | "version": "5.1.0",
1329 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
1330 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
1331 | "dev": true
1332 | }
1333 | }
1334 | },
1335 | "is-extendable": {
1336 | "version": "0.1.1",
1337 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
1338 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
1339 | "dev": true
1340 | },
1341 | "is-extglob": {
1342 | "version": "2.1.1",
1343 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1344 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1345 | "dev": true
1346 | },
1347 | "is-fullwidth-code-point": {
1348 | "version": "1.0.0",
1349 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
1350 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
1351 | "requires": {
1352 | "number-is-nan": "^1.0.0"
1353 | }
1354 | },
1355 | "is-glob": {
1356 | "version": "3.1.0",
1357 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
1358 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
1359 | "dev": true,
1360 | "requires": {
1361 | "is-extglob": "^2.1.0"
1362 | }
1363 | },
1364 | "is-number": {
1365 | "version": "3.0.0",
1366 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
1367 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
1368 | "dev": true,
1369 | "requires": {
1370 | "kind-of": "^3.0.2"
1371 | },
1372 | "dependencies": {
1373 | "kind-of": {
1374 | "version": "3.2.2",
1375 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1376 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1377 | "dev": true,
1378 | "requires": {
1379 | "is-buffer": "^1.1.5"
1380 | }
1381 | }
1382 | }
1383 | },
1384 | "is-plain-object": {
1385 | "version": "2.0.4",
1386 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
1387 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
1388 | "dev": true,
1389 | "requires": {
1390 | "isobject": "^3.0.1"
1391 | }
1392 | },
1393 | "is-relative": {
1394 | "version": "1.0.0",
1395 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
1396 | "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
1397 | "dev": true,
1398 | "requires": {
1399 | "is-unc-path": "^1.0.0"
1400 | }
1401 | },
1402 | "is-unc-path": {
1403 | "version": "1.0.0",
1404 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
1405 | "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
1406 | "dev": true,
1407 | "requires": {
1408 | "unc-path-regex": "^0.1.2"
1409 | }
1410 | },
1411 | "is-utf8": {
1412 | "version": "0.2.1",
1413 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
1414 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
1415 | "dev": true
1416 | },
1417 | "is-windows": {
1418 | "version": "1.0.2",
1419 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
1420 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
1421 | "dev": true
1422 | },
1423 | "isarray": {
1424 | "version": "1.0.0",
1425 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1426 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
1427 | },
1428 | "isexe": {
1429 | "version": "2.0.0",
1430 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1431 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1432 | "dev": true
1433 | },
1434 | "isobject": {
1435 | "version": "3.0.1",
1436 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
1437 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
1438 | "dev": true
1439 | },
1440 | "jade": {
1441 | "version": "0.26.3",
1442 | "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
1443 | "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=",
1444 | "dev": true,
1445 | "requires": {
1446 | "commander": "0.6.1",
1447 | "mkdirp": "0.3.0"
1448 | },
1449 | "dependencies": {
1450 | "commander": {
1451 | "version": "0.6.1",
1452 | "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
1453 | "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=",
1454 | "dev": true
1455 | },
1456 | "mkdirp": {
1457 | "version": "0.3.0",
1458 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
1459 | "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=",
1460 | "dev": true
1461 | }
1462 | }
1463 | },
1464 | "kind-of": {
1465 | "version": "6.0.3",
1466 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
1467 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
1468 | "dev": true
1469 | },
1470 | "liftoff": {
1471 | "version": "2.5.0",
1472 | "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
1473 | "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
1474 | "dev": true,
1475 | "requires": {
1476 | "extend": "^3.0.0",
1477 | "findup-sync": "^2.0.0",
1478 | "fined": "^1.0.1",
1479 | "flagged-respawn": "^1.0.0",
1480 | "is-plain-object": "^2.0.4",
1481 | "object.map": "^1.0.0",
1482 | "rechoir": "^0.6.2",
1483 | "resolve": "^1.1.7"
1484 | }
1485 | },
1486 | "lodash": {
1487 | "version": "1.0.2",
1488 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
1489 | "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=",
1490 | "dev": true
1491 | },
1492 | "lodash._basecopy": {
1493 | "version": "3.0.1",
1494 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
1495 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
1496 | "dev": true
1497 | },
1498 | "lodash._basetostring": {
1499 | "version": "3.0.1",
1500 | "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
1501 | "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
1502 | "dev": true
1503 | },
1504 | "lodash._basevalues": {
1505 | "version": "3.0.0",
1506 | "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
1507 | "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
1508 | "dev": true
1509 | },
1510 | "lodash._getnative": {
1511 | "version": "3.9.1",
1512 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
1513 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
1514 | "dev": true
1515 | },
1516 | "lodash._isiterateecall": {
1517 | "version": "3.0.9",
1518 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
1519 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
1520 | "dev": true
1521 | },
1522 | "lodash._reescape": {
1523 | "version": "3.0.0",
1524 | "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
1525 | "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
1526 | "dev": true
1527 | },
1528 | "lodash._reevaluate": {
1529 | "version": "3.0.0",
1530 | "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
1531 | "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
1532 | "dev": true
1533 | },
1534 | "lodash._reinterpolate": {
1535 | "version": "3.0.0",
1536 | "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
1537 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
1538 | "dev": true
1539 | },
1540 | "lodash._root": {
1541 | "version": "3.0.1",
1542 | "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
1543 | "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
1544 | "dev": true
1545 | },
1546 | "lodash.escape": {
1547 | "version": "3.2.0",
1548 | "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
1549 | "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
1550 | "dev": true,
1551 | "requires": {
1552 | "lodash._root": "^3.0.0"
1553 | }
1554 | },
1555 | "lodash.isarguments": {
1556 | "version": "3.1.0",
1557 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
1558 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
1559 | "dev": true
1560 | },
1561 | "lodash.isarray": {
1562 | "version": "3.0.4",
1563 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
1564 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
1565 | "dev": true
1566 | },
1567 | "lodash.keys": {
1568 | "version": "3.1.2",
1569 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
1570 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
1571 | "dev": true,
1572 | "requires": {
1573 | "lodash._getnative": "^3.0.0",
1574 | "lodash.isarguments": "^3.0.0",
1575 | "lodash.isarray": "^3.0.0"
1576 | }
1577 | },
1578 | "lodash.restparam": {
1579 | "version": "3.6.1",
1580 | "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
1581 | "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
1582 | "dev": true
1583 | },
1584 | "lodash.template": {
1585 | "version": "3.6.2",
1586 | "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
1587 | "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
1588 | "dev": true,
1589 | "requires": {
1590 | "lodash._basecopy": "^3.0.0",
1591 | "lodash._basetostring": "^3.0.0",
1592 | "lodash._basevalues": "^3.0.0",
1593 | "lodash._isiterateecall": "^3.0.0",
1594 | "lodash._reinterpolate": "^3.0.0",
1595 | "lodash.escape": "^3.0.0",
1596 | "lodash.keys": "^3.0.0",
1597 | "lodash.restparam": "^3.0.0",
1598 | "lodash.templatesettings": "^3.0.0"
1599 | }
1600 | },
1601 | "lodash.templatesettings": {
1602 | "version": "3.1.1",
1603 | "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
1604 | "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
1605 | "dev": true,
1606 | "requires": {
1607 | "lodash._reinterpolate": "^3.0.0",
1608 | "lodash.escape": "^3.0.0"
1609 | }
1610 | },
1611 | "lru-cache": {
1612 | "version": "2.7.3",
1613 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
1614 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
1615 | "dev": true
1616 | },
1617 | "make-iterator": {
1618 | "version": "1.0.1",
1619 | "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
1620 | "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
1621 | "dev": true,
1622 | "requires": {
1623 | "kind-of": "^6.0.2"
1624 | }
1625 | },
1626 | "map-cache": {
1627 | "version": "0.2.2",
1628 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
1629 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
1630 | "dev": true
1631 | },
1632 | "map-visit": {
1633 | "version": "1.0.0",
1634 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
1635 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
1636 | "dev": true,
1637 | "requires": {
1638 | "object-visit": "^1.0.0"
1639 | }
1640 | },
1641 | "micromatch": {
1642 | "version": "3.1.10",
1643 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
1644 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
1645 | "dev": true,
1646 | "requires": {
1647 | "arr-diff": "^4.0.0",
1648 | "array-unique": "^0.3.2",
1649 | "braces": "^2.3.1",
1650 | "define-property": "^2.0.2",
1651 | "extend-shallow": "^3.0.2",
1652 | "extglob": "^2.0.4",
1653 | "fragment-cache": "^0.2.1",
1654 | "kind-of": "^6.0.2",
1655 | "nanomatch": "^1.2.9",
1656 | "object.pick": "^1.3.0",
1657 | "regex-not": "^1.0.0",
1658 | "snapdragon": "^0.8.1",
1659 | "to-regex": "^3.0.2"
1660 | }
1661 | },
1662 | "mimic-response": {
1663 | "version": "2.1.0",
1664 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
1665 | "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA=="
1666 | },
1667 | "minimatch": {
1668 | "version": "2.0.10",
1669 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
1670 | "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
1671 | "dev": true,
1672 | "requires": {
1673 | "brace-expansion": "^1.0.0"
1674 | }
1675 | },
1676 | "minimist": {
1677 | "version": "1.2.5",
1678 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
1679 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
1680 | },
1681 | "mixin-deep": {
1682 | "version": "1.3.2",
1683 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
1684 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
1685 | "dev": true,
1686 | "requires": {
1687 | "for-in": "^1.0.2",
1688 | "is-extendable": "^1.0.1"
1689 | },
1690 | "dependencies": {
1691 | "is-extendable": {
1692 | "version": "1.0.1",
1693 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
1694 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
1695 | "dev": true,
1696 | "requires": {
1697 | "is-plain-object": "^2.0.4"
1698 | }
1699 | }
1700 | }
1701 | },
1702 | "mkdirp": {
1703 | "version": "0.5.5",
1704 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
1705 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
1706 | "dev": true,
1707 | "requires": {
1708 | "minimist": "^1.2.5"
1709 | }
1710 | },
1711 | "mkdirp-classic": {
1712 | "version": "0.5.3",
1713 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
1714 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
1715 | },
1716 | "mocha": {
1717 | "version": "2.5.3",
1718 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz",
1719 | "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=",
1720 | "dev": true,
1721 | "requires": {
1722 | "commander": "2.3.0",
1723 | "debug": "2.2.0",
1724 | "diff": "1.4.0",
1725 | "escape-string-regexp": "1.0.2",
1726 | "glob": "3.2.11",
1727 | "growl": "1.9.2",
1728 | "jade": "0.26.3",
1729 | "mkdirp": "0.5.1",
1730 | "supports-color": "1.2.0",
1731 | "to-iso-string": "0.0.2"
1732 | },
1733 | "dependencies": {
1734 | "debug": {
1735 | "version": "2.2.0",
1736 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
1737 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
1738 | "dev": true,
1739 | "requires": {
1740 | "ms": "0.7.1"
1741 | }
1742 | },
1743 | "escape-string-regexp": {
1744 | "version": "1.0.2",
1745 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz",
1746 | "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=",
1747 | "dev": true
1748 | },
1749 | "glob": {
1750 | "version": "3.2.11",
1751 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
1752 | "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
1753 | "dev": true,
1754 | "requires": {
1755 | "inherits": "2",
1756 | "minimatch": "0.3"
1757 | }
1758 | },
1759 | "minimatch": {
1760 | "version": "0.3.0",
1761 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
1762 | "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
1763 | "dev": true,
1764 | "requires": {
1765 | "lru-cache": "2",
1766 | "sigmund": "~1.0.0"
1767 | }
1768 | },
1769 | "minimist": {
1770 | "version": "0.0.8",
1771 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1772 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
1773 | "dev": true
1774 | },
1775 | "mkdirp": {
1776 | "version": "0.5.1",
1777 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1778 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1779 | "dev": true,
1780 | "requires": {
1781 | "minimist": "0.0.8"
1782 | }
1783 | },
1784 | "ms": {
1785 | "version": "0.7.1",
1786 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
1787 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
1788 | "dev": true
1789 | },
1790 | "supports-color": {
1791 | "version": "1.2.0",
1792 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz",
1793 | "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=",
1794 | "dev": true
1795 | }
1796 | }
1797 | },
1798 | "ms": {
1799 | "version": "2.0.0",
1800 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1801 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1802 | "dev": true
1803 | },
1804 | "multipipe": {
1805 | "version": "0.1.2",
1806 | "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
1807 | "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
1808 | "dev": true,
1809 | "requires": {
1810 | "duplexer2": "0.0.2"
1811 | }
1812 | },
1813 | "nanomatch": {
1814 | "version": "1.2.13",
1815 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
1816 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
1817 | "dev": true,
1818 | "requires": {
1819 | "arr-diff": "^4.0.0",
1820 | "array-unique": "^0.3.2",
1821 | "define-property": "^2.0.2",
1822 | "extend-shallow": "^3.0.2",
1823 | "fragment-cache": "^0.2.1",
1824 | "is-windows": "^1.0.2",
1825 | "kind-of": "^6.0.2",
1826 | "object.pick": "^1.3.0",
1827 | "regex-not": "^1.0.0",
1828 | "snapdragon": "^0.8.1",
1829 | "to-regex": "^3.0.1"
1830 | }
1831 | },
1832 | "napi-build-utils": {
1833 | "version": "1.0.2",
1834 | "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
1835 | "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg=="
1836 | },
1837 | "natives": {
1838 | "version": "1.1.6",
1839 | "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz",
1840 | "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==",
1841 | "dev": true
1842 | },
1843 | "node-abi": {
1844 | "version": "2.30.1",
1845 | "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz",
1846 | "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==",
1847 | "requires": {
1848 | "semver": "^5.4.1"
1849 | }
1850 | },
1851 | "node-addon-api": {
1852 | "version": "3.2.1",
1853 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
1854 | "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="
1855 | },
1856 | "npmlog": {
1857 | "version": "4.1.2",
1858 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
1859 | "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
1860 | "requires": {
1861 | "are-we-there-yet": "~1.1.2",
1862 | "console-control-strings": "~1.1.0",
1863 | "gauge": "~2.7.3",
1864 | "set-blocking": "~2.0.0"
1865 | }
1866 | },
1867 | "number-is-nan": {
1868 | "version": "1.0.1",
1869 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
1870 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
1871 | },
1872 | "object-assign": {
1873 | "version": "4.1.1",
1874 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1875 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
1876 | },
1877 | "object-copy": {
1878 | "version": "0.1.0",
1879 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
1880 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
1881 | "dev": true,
1882 | "requires": {
1883 | "copy-descriptor": "^0.1.0",
1884 | "define-property": "^0.2.5",
1885 | "kind-of": "^3.0.3"
1886 | },
1887 | "dependencies": {
1888 | "define-property": {
1889 | "version": "0.2.5",
1890 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1891 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1892 | "dev": true,
1893 | "requires": {
1894 | "is-descriptor": "^0.1.0"
1895 | }
1896 | },
1897 | "kind-of": {
1898 | "version": "3.2.2",
1899 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1900 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1901 | "dev": true,
1902 | "requires": {
1903 | "is-buffer": "^1.1.5"
1904 | }
1905 | }
1906 | }
1907 | },
1908 | "object-visit": {
1909 | "version": "1.0.1",
1910 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
1911 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
1912 | "dev": true,
1913 | "requires": {
1914 | "isobject": "^3.0.0"
1915 | }
1916 | },
1917 | "object.defaults": {
1918 | "version": "1.1.0",
1919 | "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
1920 | "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
1921 | "dev": true,
1922 | "requires": {
1923 | "array-each": "^1.0.1",
1924 | "array-slice": "^1.0.0",
1925 | "for-own": "^1.0.0",
1926 | "isobject": "^3.0.0"
1927 | }
1928 | },
1929 | "object.map": {
1930 | "version": "1.0.1",
1931 | "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
1932 | "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
1933 | "dev": true,
1934 | "requires": {
1935 | "for-own": "^1.0.0",
1936 | "make-iterator": "^1.0.0"
1937 | }
1938 | },
1939 | "object.pick": {
1940 | "version": "1.3.0",
1941 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
1942 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
1943 | "dev": true,
1944 | "requires": {
1945 | "isobject": "^3.0.1"
1946 | }
1947 | },
1948 | "once": {
1949 | "version": "1.4.0",
1950 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1951 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1952 | "requires": {
1953 | "wrappy": "1"
1954 | }
1955 | },
1956 | "orchestrator": {
1957 | "version": "0.3.8",
1958 | "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz",
1959 | "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=",
1960 | "dev": true,
1961 | "requires": {
1962 | "end-of-stream": "~0.1.5",
1963 | "sequencify": "~0.0.7",
1964 | "stream-consume": "~0.1.0"
1965 | },
1966 | "dependencies": {
1967 | "end-of-stream": {
1968 | "version": "0.1.5",
1969 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz",
1970 | "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
1971 | "dev": true,
1972 | "requires": {
1973 | "once": "~1.3.0"
1974 | }
1975 | },
1976 | "once": {
1977 | "version": "1.3.3",
1978 | "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
1979 | "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
1980 | "dev": true,
1981 | "requires": {
1982 | "wrappy": "1"
1983 | }
1984 | }
1985 | }
1986 | },
1987 | "ordered-read-streams": {
1988 | "version": "0.1.0",
1989 | "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz",
1990 | "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=",
1991 | "dev": true
1992 | },
1993 | "os-homedir": {
1994 | "version": "1.0.2",
1995 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
1996 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
1997 | "dev": true
1998 | },
1999 | "parse-filepath": {
2000 | "version": "1.0.2",
2001 | "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
2002 | "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
2003 | "dev": true,
2004 | "requires": {
2005 | "is-absolute": "^1.0.0",
2006 | "map-cache": "^0.2.0",
2007 | "path-root": "^0.1.1"
2008 | }
2009 | },
2010 | "parse-node-version": {
2011 | "version": "1.0.1",
2012 | "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
2013 | "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
2014 | "dev": true
2015 | },
2016 | "parse-passwd": {
2017 | "version": "1.0.0",
2018 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
2019 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
2020 | "dev": true
2021 | },
2022 | "pascalcase": {
2023 | "version": "0.1.1",
2024 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
2025 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
2026 | "dev": true
2027 | },
2028 | "path-parse": {
2029 | "version": "1.0.7",
2030 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2031 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2032 | "dev": true
2033 | },
2034 | "path-root": {
2035 | "version": "0.1.1",
2036 | "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
2037 | "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
2038 | "dev": true,
2039 | "requires": {
2040 | "path-root-regex": "^0.1.0"
2041 | }
2042 | },
2043 | "path-root-regex": {
2044 | "version": "0.1.2",
2045 | "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
2046 | "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
2047 | "dev": true
2048 | },
2049 | "posix-character-classes": {
2050 | "version": "0.1.1",
2051 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
2052 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
2053 | "dev": true
2054 | },
2055 | "prebuild-install": {
2056 | "version": "6.1.4",
2057 | "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz",
2058 | "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==",
2059 | "requires": {
2060 | "detect-libc": "^1.0.3",
2061 | "expand-template": "^2.0.3",
2062 | "github-from-package": "0.0.0",
2063 | "minimist": "^1.2.3",
2064 | "mkdirp-classic": "^0.5.3",
2065 | "napi-build-utils": "^1.0.1",
2066 | "node-abi": "^2.21.0",
2067 | "npmlog": "^4.0.1",
2068 | "pump": "^3.0.0",
2069 | "rc": "^1.2.7",
2070 | "simple-get": "^3.0.3",
2071 | "tar-fs": "^2.0.0",
2072 | "tunnel-agent": "^0.6.0"
2073 | }
2074 | },
2075 | "pretty-hrtime": {
2076 | "version": "1.0.3",
2077 | "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
2078 | "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
2079 | "dev": true
2080 | },
2081 | "process-nextick-args": {
2082 | "version": "2.0.1",
2083 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
2084 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
2085 | },
2086 | "pump": {
2087 | "version": "3.0.0",
2088 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
2089 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
2090 | "requires": {
2091 | "end-of-stream": "^1.1.0",
2092 | "once": "^1.3.1"
2093 | }
2094 | },
2095 | "rc": {
2096 | "version": "1.2.8",
2097 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
2098 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
2099 | "requires": {
2100 | "deep-extend": "^0.6.0",
2101 | "ini": "~1.3.0",
2102 | "minimist": "^1.2.0",
2103 | "strip-json-comments": "~2.0.1"
2104 | }
2105 | },
2106 | "readable-stream": {
2107 | "version": "2.3.7",
2108 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
2109 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
2110 | "requires": {
2111 | "core-util-is": "~1.0.0",
2112 | "inherits": "~2.0.3",
2113 | "isarray": "~1.0.0",
2114 | "process-nextick-args": "~2.0.0",
2115 | "safe-buffer": "~5.1.1",
2116 | "string_decoder": "~1.1.1",
2117 | "util-deprecate": "~1.0.1"
2118 | }
2119 | },
2120 | "rechoir": {
2121 | "version": "0.6.2",
2122 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
2123 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
2124 | "dev": true,
2125 | "requires": {
2126 | "resolve": "^1.1.6"
2127 | }
2128 | },
2129 | "regex-not": {
2130 | "version": "1.0.2",
2131 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
2132 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
2133 | "dev": true,
2134 | "requires": {
2135 | "extend-shallow": "^3.0.2",
2136 | "safe-regex": "^1.1.0"
2137 | }
2138 | },
2139 | "repeat-element": {
2140 | "version": "1.1.4",
2141 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
2142 | "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
2143 | "dev": true
2144 | },
2145 | "repeat-string": {
2146 | "version": "1.6.1",
2147 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
2148 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
2149 | "dev": true
2150 | },
2151 | "replace-ext": {
2152 | "version": "0.0.1",
2153 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
2154 | "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
2155 | "dev": true
2156 | },
2157 | "replacestream": {
2158 | "version": "4.0.3",
2159 | "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz",
2160 | "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==",
2161 | "requires": {
2162 | "escape-string-regexp": "^1.0.3",
2163 | "object-assign": "^4.0.1",
2164 | "readable-stream": "^2.0.2"
2165 | }
2166 | },
2167 | "resolve": {
2168 | "version": "1.20.0",
2169 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
2170 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
2171 | "dev": true,
2172 | "requires": {
2173 | "is-core-module": "^2.2.0",
2174 | "path-parse": "^1.0.6"
2175 | }
2176 | },
2177 | "resolve-dir": {
2178 | "version": "1.0.1",
2179 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
2180 | "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
2181 | "dev": true,
2182 | "requires": {
2183 | "expand-tilde": "^2.0.0",
2184 | "global-modules": "^1.0.0"
2185 | }
2186 | },
2187 | "resolve-url": {
2188 | "version": "0.2.1",
2189 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
2190 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
2191 | "dev": true
2192 | },
2193 | "ret": {
2194 | "version": "0.1.15",
2195 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
2196 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
2197 | "dev": true
2198 | },
2199 | "safe-buffer": {
2200 | "version": "5.1.2",
2201 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2202 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
2203 | },
2204 | "safe-regex": {
2205 | "version": "1.1.0",
2206 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
2207 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
2208 | "dev": true,
2209 | "requires": {
2210 | "ret": "~0.1.10"
2211 | }
2212 | },
2213 | "semver": {
2214 | "version": "5.7.1",
2215 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
2216 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
2217 | },
2218 | "sequencify": {
2219 | "version": "0.0.7",
2220 | "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz",
2221 | "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=",
2222 | "dev": true
2223 | },
2224 | "set-blocking": {
2225 | "version": "2.0.0",
2226 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
2227 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
2228 | },
2229 | "set-value": {
2230 | "version": "2.0.1",
2231 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
2232 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
2233 | "dev": true,
2234 | "requires": {
2235 | "extend-shallow": "^2.0.1",
2236 | "is-extendable": "^0.1.1",
2237 | "is-plain-object": "^2.0.3",
2238 | "split-string": "^3.0.1"
2239 | },
2240 | "dependencies": {
2241 | "extend-shallow": {
2242 | "version": "2.0.1",
2243 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2244 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2245 | "dev": true,
2246 | "requires": {
2247 | "is-extendable": "^0.1.0"
2248 | }
2249 | }
2250 | }
2251 | },
2252 | "sigmund": {
2253 | "version": "1.0.1",
2254 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
2255 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
2256 | "dev": true
2257 | },
2258 | "signal-exit": {
2259 | "version": "3.0.5",
2260 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz",
2261 | "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ=="
2262 | },
2263 | "simple-concat": {
2264 | "version": "1.0.1",
2265 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
2266 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
2267 | },
2268 | "simple-get": {
2269 | "version": "3.1.0",
2270 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
2271 | "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
2272 | "requires": {
2273 | "decompress-response": "^4.2.0",
2274 | "once": "^1.3.1",
2275 | "simple-concat": "^1.0.0"
2276 | }
2277 | },
2278 | "snapdragon": {
2279 | "version": "0.8.2",
2280 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
2281 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
2282 | "dev": true,
2283 | "requires": {
2284 | "base": "^0.11.1",
2285 | "debug": "^2.2.0",
2286 | "define-property": "^0.2.5",
2287 | "extend-shallow": "^2.0.1",
2288 | "map-cache": "^0.2.2",
2289 | "source-map": "^0.5.6",
2290 | "source-map-resolve": "^0.5.0",
2291 | "use": "^3.1.0"
2292 | },
2293 | "dependencies": {
2294 | "define-property": {
2295 | "version": "0.2.5",
2296 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
2297 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
2298 | "dev": true,
2299 | "requires": {
2300 | "is-descriptor": "^0.1.0"
2301 | }
2302 | },
2303 | "extend-shallow": {
2304 | "version": "2.0.1",
2305 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2306 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2307 | "dev": true,
2308 | "requires": {
2309 | "is-extendable": "^0.1.0"
2310 | }
2311 | }
2312 | }
2313 | },
2314 | "snapdragon-node": {
2315 | "version": "2.1.1",
2316 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
2317 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
2318 | "dev": true,
2319 | "requires": {
2320 | "define-property": "^1.0.0",
2321 | "isobject": "^3.0.0",
2322 | "snapdragon-util": "^3.0.1"
2323 | },
2324 | "dependencies": {
2325 | "define-property": {
2326 | "version": "1.0.0",
2327 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
2328 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
2329 | "dev": true,
2330 | "requires": {
2331 | "is-descriptor": "^1.0.0"
2332 | }
2333 | },
2334 | "is-accessor-descriptor": {
2335 | "version": "1.0.0",
2336 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
2337 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
2338 | "dev": true,
2339 | "requires": {
2340 | "kind-of": "^6.0.0"
2341 | }
2342 | },
2343 | "is-data-descriptor": {
2344 | "version": "1.0.0",
2345 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
2346 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
2347 | "dev": true,
2348 | "requires": {
2349 | "kind-of": "^6.0.0"
2350 | }
2351 | },
2352 | "is-descriptor": {
2353 | "version": "1.0.2",
2354 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
2355 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
2356 | "dev": true,
2357 | "requires": {
2358 | "is-accessor-descriptor": "^1.0.0",
2359 | "is-data-descriptor": "^1.0.0",
2360 | "kind-of": "^6.0.2"
2361 | }
2362 | }
2363 | }
2364 | },
2365 | "snapdragon-util": {
2366 | "version": "3.0.1",
2367 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
2368 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
2369 | "dev": true,
2370 | "requires": {
2371 | "kind-of": "^3.2.0"
2372 | },
2373 | "dependencies": {
2374 | "kind-of": {
2375 | "version": "3.2.2",
2376 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2377 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2378 | "dev": true,
2379 | "requires": {
2380 | "is-buffer": "^1.1.5"
2381 | }
2382 | }
2383 | }
2384 | },
2385 | "source-map": {
2386 | "version": "0.5.7",
2387 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
2388 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
2389 | "dev": true
2390 | },
2391 | "source-map-resolve": {
2392 | "version": "0.5.3",
2393 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
2394 | "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
2395 | "dev": true,
2396 | "requires": {
2397 | "atob": "^2.1.2",
2398 | "decode-uri-component": "^0.2.0",
2399 | "resolve-url": "^0.2.1",
2400 | "source-map-url": "^0.4.0",
2401 | "urix": "^0.1.0"
2402 | }
2403 | },
2404 | "source-map-url": {
2405 | "version": "0.4.1",
2406 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
2407 | "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
2408 | "dev": true
2409 | },
2410 | "sparkles": {
2411 | "version": "1.0.1",
2412 | "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
2413 | "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
2414 | "dev": true
2415 | },
2416 | "split-string": {
2417 | "version": "3.1.0",
2418 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
2419 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
2420 | "dev": true,
2421 | "requires": {
2422 | "extend-shallow": "^3.0.0"
2423 | }
2424 | },
2425 | "static-extend": {
2426 | "version": "0.1.2",
2427 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
2428 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
2429 | "dev": true,
2430 | "requires": {
2431 | "define-property": "^0.2.5",
2432 | "object-copy": "^0.1.0"
2433 | },
2434 | "dependencies": {
2435 | "define-property": {
2436 | "version": "0.2.5",
2437 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
2438 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
2439 | "dev": true,
2440 | "requires": {
2441 | "is-descriptor": "^0.1.0"
2442 | }
2443 | }
2444 | }
2445 | },
2446 | "stream-assert": {
2447 | "version": "2.0.3",
2448 | "resolved": "https://registry.npmjs.org/stream-assert/-/stream-assert-2.0.3.tgz",
2449 | "integrity": "sha1-G6ijS2feoGsA7jkmHKYEFDcjPjI=",
2450 | "dev": true,
2451 | "requires": {
2452 | "through2": "^0.6.1"
2453 | },
2454 | "dependencies": {
2455 | "isarray": {
2456 | "version": "0.0.1",
2457 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
2458 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
2459 | "dev": true
2460 | },
2461 | "readable-stream": {
2462 | "version": "1.0.34",
2463 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
2464 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
2465 | "dev": true,
2466 | "requires": {
2467 | "core-util-is": "~1.0.0",
2468 | "inherits": "~2.0.1",
2469 | "isarray": "0.0.1",
2470 | "string_decoder": "~0.10.x"
2471 | }
2472 | },
2473 | "string_decoder": {
2474 | "version": "0.10.31",
2475 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
2476 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
2477 | "dev": true
2478 | },
2479 | "through2": {
2480 | "version": "0.6.5",
2481 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
2482 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
2483 | "dev": true,
2484 | "requires": {
2485 | "readable-stream": ">=1.0.33-1 <1.1.0-0",
2486 | "xtend": ">=4.0.0 <4.1.0-0"
2487 | }
2488 | }
2489 | }
2490 | },
2491 | "stream-consume": {
2492 | "version": "0.1.1",
2493 | "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz",
2494 | "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==",
2495 | "dev": true
2496 | },
2497 | "string-width": {
2498 | "version": "1.0.2",
2499 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
2500 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
2501 | "requires": {
2502 | "code-point-at": "^1.0.0",
2503 | "is-fullwidth-code-point": "^1.0.0",
2504 | "strip-ansi": "^3.0.0"
2505 | }
2506 | },
2507 | "string_decoder": {
2508 | "version": "1.1.1",
2509 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2510 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2511 | "requires": {
2512 | "safe-buffer": "~5.1.0"
2513 | }
2514 | },
2515 | "strip-ansi": {
2516 | "version": "3.0.1",
2517 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
2518 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
2519 | "requires": {
2520 | "ansi-regex": "^2.0.0"
2521 | }
2522 | },
2523 | "strip-bom": {
2524 | "version": "1.0.0",
2525 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz",
2526 | "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=",
2527 | "dev": true,
2528 | "requires": {
2529 | "first-chunk-stream": "^1.0.0",
2530 | "is-utf8": "^0.2.0"
2531 | }
2532 | },
2533 | "strip-json-comments": {
2534 | "version": "2.0.1",
2535 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
2536 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
2537 | },
2538 | "supports-color": {
2539 | "version": "2.0.0",
2540 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
2541 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
2542 | "dev": true
2543 | },
2544 | "tar-fs": {
2545 | "version": "2.1.1",
2546 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
2547 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
2548 | "requires": {
2549 | "chownr": "^1.1.1",
2550 | "mkdirp-classic": "^0.5.2",
2551 | "pump": "^3.0.0",
2552 | "tar-stream": "^2.1.4"
2553 | }
2554 | },
2555 | "tar-stream": {
2556 | "version": "2.2.0",
2557 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
2558 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
2559 | "requires": {
2560 | "bl": "^4.0.3",
2561 | "end-of-stream": "^1.4.1",
2562 | "fs-constants": "^1.0.0",
2563 | "inherits": "^2.0.3",
2564 | "readable-stream": "^3.1.1"
2565 | },
2566 | "dependencies": {
2567 | "readable-stream": {
2568 | "version": "3.6.0",
2569 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
2570 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
2571 | "requires": {
2572 | "inherits": "^2.0.3",
2573 | "string_decoder": "^1.1.1",
2574 | "util-deprecate": "^1.0.1"
2575 | }
2576 | }
2577 | }
2578 | },
2579 | "through2": {
2580 | "version": "2.0.5",
2581 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
2582 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
2583 | "dev": true,
2584 | "requires": {
2585 | "readable-stream": "~2.3.6",
2586 | "xtend": "~4.0.1"
2587 | }
2588 | },
2589 | "tildify": {
2590 | "version": "1.2.0",
2591 | "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
2592 | "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
2593 | "dev": true,
2594 | "requires": {
2595 | "os-homedir": "^1.0.0"
2596 | }
2597 | },
2598 | "time-stamp": {
2599 | "version": "1.1.0",
2600 | "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
2601 | "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
2602 | "dev": true
2603 | },
2604 | "to-iso-string": {
2605 | "version": "0.0.2",
2606 | "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz",
2607 | "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=",
2608 | "dev": true
2609 | },
2610 | "to-object-path": {
2611 | "version": "0.3.0",
2612 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
2613 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
2614 | "dev": true,
2615 | "requires": {
2616 | "kind-of": "^3.0.2"
2617 | },
2618 | "dependencies": {
2619 | "kind-of": {
2620 | "version": "3.2.2",
2621 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2622 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2623 | "dev": true,
2624 | "requires": {
2625 | "is-buffer": "^1.1.5"
2626 | }
2627 | }
2628 | }
2629 | },
2630 | "to-regex": {
2631 | "version": "3.0.2",
2632 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
2633 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
2634 | "dev": true,
2635 | "requires": {
2636 | "define-property": "^2.0.2",
2637 | "extend-shallow": "^3.0.2",
2638 | "regex-not": "^1.0.2",
2639 | "safe-regex": "^1.1.0"
2640 | }
2641 | },
2642 | "to-regex-range": {
2643 | "version": "2.1.1",
2644 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
2645 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
2646 | "dev": true,
2647 | "requires": {
2648 | "is-number": "^3.0.0",
2649 | "repeat-string": "^1.6.1"
2650 | }
2651 | },
2652 | "tunnel-agent": {
2653 | "version": "0.6.0",
2654 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
2655 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
2656 | "requires": {
2657 | "safe-buffer": "^5.0.1"
2658 | }
2659 | },
2660 | "type-detect": {
2661 | "version": "1.0.0",
2662 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz",
2663 | "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=",
2664 | "dev": true
2665 | },
2666 | "typedarray": {
2667 | "version": "0.0.6",
2668 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
2669 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
2670 | "dev": true
2671 | },
2672 | "unc-path-regex": {
2673 | "version": "0.1.2",
2674 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
2675 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
2676 | "dev": true
2677 | },
2678 | "union-value": {
2679 | "version": "1.0.1",
2680 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
2681 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
2682 | "dev": true,
2683 | "requires": {
2684 | "arr-union": "^3.1.0",
2685 | "get-value": "^2.0.6",
2686 | "is-extendable": "^0.1.1",
2687 | "set-value": "^2.0.1"
2688 | }
2689 | },
2690 | "unique-stream": {
2691 | "version": "1.0.0",
2692 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz",
2693 | "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=",
2694 | "dev": true
2695 | },
2696 | "unset-value": {
2697 | "version": "1.0.0",
2698 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
2699 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
2700 | "dev": true,
2701 | "requires": {
2702 | "has-value": "^0.3.1",
2703 | "isobject": "^3.0.0"
2704 | },
2705 | "dependencies": {
2706 | "has-value": {
2707 | "version": "0.3.1",
2708 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
2709 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
2710 | "dev": true,
2711 | "requires": {
2712 | "get-value": "^2.0.3",
2713 | "has-values": "^0.1.4",
2714 | "isobject": "^2.0.0"
2715 | },
2716 | "dependencies": {
2717 | "isobject": {
2718 | "version": "2.1.0",
2719 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
2720 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
2721 | "dev": true,
2722 | "requires": {
2723 | "isarray": "1.0.0"
2724 | }
2725 | }
2726 | }
2727 | },
2728 | "has-values": {
2729 | "version": "0.1.4",
2730 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
2731 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
2732 | "dev": true
2733 | }
2734 | }
2735 | },
2736 | "urix": {
2737 | "version": "0.1.0",
2738 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
2739 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
2740 | "dev": true
2741 | },
2742 | "use": {
2743 | "version": "3.1.1",
2744 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
2745 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
2746 | "dev": true
2747 | },
2748 | "user-home": {
2749 | "version": "1.1.1",
2750 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
2751 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
2752 | "dev": true
2753 | },
2754 | "util-deprecate": {
2755 | "version": "1.0.2",
2756 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2757 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
2758 | },
2759 | "v8flags": {
2760 | "version": "2.1.1",
2761 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
2762 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
2763 | "dev": true,
2764 | "requires": {
2765 | "user-home": "^1.1.1"
2766 | }
2767 | },
2768 | "vinyl": {
2769 | "version": "1.2.0",
2770 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
2771 | "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
2772 | "dev": true,
2773 | "requires": {
2774 | "clone": "^1.0.0",
2775 | "clone-stats": "^0.0.1",
2776 | "replace-ext": "0.0.1"
2777 | }
2778 | },
2779 | "vinyl-fs": {
2780 | "version": "0.3.14",
2781 | "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz",
2782 | "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=",
2783 | "dev": true,
2784 | "requires": {
2785 | "defaults": "^1.0.0",
2786 | "glob-stream": "^3.1.5",
2787 | "glob-watcher": "^0.0.6",
2788 | "graceful-fs": "^3.0.0",
2789 | "mkdirp": "^0.5.0",
2790 | "strip-bom": "^1.0.0",
2791 | "through2": "^0.6.1",
2792 | "vinyl": "^0.4.0"
2793 | },
2794 | "dependencies": {
2795 | "clone": {
2796 | "version": "0.2.0",
2797 | "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
2798 | "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
2799 | "dev": true
2800 | },
2801 | "isarray": {
2802 | "version": "0.0.1",
2803 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
2804 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
2805 | "dev": true
2806 | },
2807 | "readable-stream": {
2808 | "version": "1.0.34",
2809 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
2810 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
2811 | "dev": true,
2812 | "requires": {
2813 | "core-util-is": "~1.0.0",
2814 | "inherits": "~2.0.1",
2815 | "isarray": "0.0.1",
2816 | "string_decoder": "~0.10.x"
2817 | }
2818 | },
2819 | "string_decoder": {
2820 | "version": "0.10.31",
2821 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
2822 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
2823 | "dev": true
2824 | },
2825 | "through2": {
2826 | "version": "0.6.5",
2827 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
2828 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
2829 | "dev": true,
2830 | "requires": {
2831 | "readable-stream": ">=1.0.33-1 <1.1.0-0",
2832 | "xtend": ">=4.0.0 <4.1.0-0"
2833 | }
2834 | },
2835 | "vinyl": {
2836 | "version": "0.4.6",
2837 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
2838 | "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
2839 | "dev": true,
2840 | "requires": {
2841 | "clone": "^0.2.0",
2842 | "clone-stats": "^0.0.1"
2843 | }
2844 | }
2845 | }
2846 | },
2847 | "which": {
2848 | "version": "1.3.1",
2849 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
2850 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
2851 | "dev": true,
2852 | "requires": {
2853 | "isexe": "^2.0.0"
2854 | }
2855 | },
2856 | "wide-align": {
2857 | "version": "1.1.5",
2858 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
2859 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
2860 | "requires": {
2861 | "string-width": "^1.0.2 || 2 || 3 || 4"
2862 | }
2863 | },
2864 | "wrappy": {
2865 | "version": "1.0.2",
2866 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2867 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
2868 | },
2869 | "xtend": {
2870 | "version": "4.0.2",
2871 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
2872 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
2873 | "dev": true
2874 | }
2875 | }
2876 | }
2877 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gulp-minify-css-names",
3 | "version": "2.1.0",
4 | "description": "Gulp plugin to minify CSS classes and CSS IDs",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "mocha"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git://github.com/valeriansaliou/gulp-minify-css-names.git"
12 | },
13 | "author": "Valerian Saliou",
14 | "license": "MIT",
15 | "homepage": "https://github.com/valeriansaliou/gulp-minify-css-names",
16 | "engines": {
17 | "node": ">= 10.0.0"
18 | },
19 | "dependencies": {
20 | "readable-stream": "^2.0.5",
21 | "replacestream": "^4.0.0",
22 | "farmhash": "^3.2.1"
23 | },
24 | "devDependencies": {
25 | "chai": "^3.4.1",
26 | "concat-stream": "^1.5.1",
27 | "gulp": "^3.9.0",
28 | "mocha": "^2.3.4",
29 | "stream-assert": "^2.0.3",
30 | "vinyl": "^1.1.0"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/test/fixtures/group/app.js:
--------------------------------------------------------------------------------
1 | var $div = document.querySelector('#-pre-test3-post-');
2 | $div.id = '-pre-test10-post-';
3 |
--------------------------------------------------------------------------------
/test/fixtures/group/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/test/fixtures/group/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #-pre-test-post- {
6 | color: green;
7 | }
8 |
9 | #-pre-test2-post- {
10 | color: green;
11 | }
12 |
13 | #-pre-test3-post-, #-pre-test4-post- {
14 | color: green;
15 | }
16 |
17 | #-pre-test2-post- {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/fixtures/style.alt-append.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #-alt-append-test-post- {
6 | color: green;
7 | }
8 |
9 | #-alt-append-test2-post- {
10 | color: green;
11 | }
12 |
13 | #-alt-append-test3-post-, #-alt-append-test4-post- {
14 | color: green;
15 | }
16 |
17 | #-pre-test2-post- {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/fixtures/style.alt-buster.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #-pre-test-post- {
6 | color: green;
7 | }
8 |
9 | #-pre-test2-post- {
10 | color: green;
11 | }
12 |
--------------------------------------------------------------------------------
/test/fixtures/style.alt-method-hash-strong.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #-pre-test-post- {
6 | color: green;
7 | }
8 |
9 | #-pre-test2-post- {
10 | color: green;
11 | }
12 |
--------------------------------------------------------------------------------
/test/fixtures/style.alt-method-hash-weak.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #-pre-test-post- {
6 | color: green;
7 | }
8 |
9 | #-pre-test2-post- {
10 | color: green;
11 | }
12 |
--------------------------------------------------------------------------------
/test/fixtures/style.alt-postfix.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #-pre-test-alt-postfix- {
6 | color: green;
7 | }
8 |
9 | #-pre-test2-alt-postfix- {
10 | color: green;
11 | }
12 |
13 | #-pre-test3-alt-postfix-, #-pre-test4-alt-postfix- {
14 | color: green;
15 | }
16 |
17 | #-pre-test2-post- {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/fixtures/style.alt-prefix.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #-alt-prefix-test-post- {
6 | color: green;
7 | }
8 |
9 | #-alt-prefix-test2-post- {
10 | color: green;
11 | }
12 |
13 | #-alt-prefix-test3-post-, #-alt-prefix-test4-post- {
14 | color: green;
15 | }
16 |
17 | #-pre-test2-post- {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/fixtures/style.alt-prepend.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #-alt-prepend-test-post- {
6 | color: green;
7 | }
8 |
9 | #-alt-prepend-test2-post- {
10 | color: green;
11 | }
12 |
13 | #-alt-prepend-test3-post-, #-alt-prepend-test4-post- {
14 | color: green;
15 | }
16 |
17 | #-pre-test2-post- {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/fixtures/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #-pre-test-post- {
6 | color: green;
7 | }
8 |
9 | #-pre-test2-post- {
10 | color: green;
11 | }
12 |
13 | #-pre-test3-post-, #-pre-test4-post- {
14 | color: green;
15 | }
16 |
17 | #-pre-test2-post- {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/main.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var fs = require('fs');
4 | var concatStream = require('concat-stream');
5 | var gulp = require('gulp');
6 | var expect = require('chai').expect;
7 | var streamAssert = require('stream-assert');
8 | var File = require('vinyl');
9 | var minify = require('../');
10 |
11 | describe('gulp-minify-cssnames', function() {
12 | describe('Replace CSS names', function() {
13 | it('Should work with buffer', function(done) {
14 | var stream = minify();
15 | var file = new File({
16 | path: 'test/fixtures/style.css',
17 | cwd: 'test/',
18 | base: 'test/fixtures',
19 | contents: fs.readFileSync('test/fixtures/style.css')
20 | });
21 |
22 | stream.on('data', function(file) {
23 | expect(String(file.contents)).to.equal(fs.readFileSync('test/result/style.css', 'utf8'));
24 | done();
25 | });
26 |
27 | stream.write(file);
28 | stream.end();
29 | });
30 |
31 | it('Should work with stream', function(done) {
32 | var stream = minify();
33 | var file = new File({
34 | path: 'test/fixtures/style.css',
35 | cwd: 'test/',
36 | base: 'test/fixtures',
37 | contents: fs.createReadStream('test/fixtures/style.css')
38 | });
39 |
40 | stream.on('data', function(file) {
41 | file.contents.pipe(concatStream({encoding: 'string'}, function(data) {
42 | expect(data).to.equal(fs.readFileSync('test/result/style.css', 'utf8'));
43 | done();
44 | }));
45 | });
46 |
47 | stream.write(file);
48 | stream.end();
49 | });
50 |
51 | it('Should work with buffer (alternative method-hash-strong)', function(done) {
52 | var stream = minify({method: 'hash-strong'});
53 | var file = new File({
54 | path: 'test/fixtures/style.alt-method-hash-strong.css',
55 | cwd: 'test/',
56 | base: 'test/fixtures',
57 | contents: fs.readFileSync('test/fixtures/style.alt-method-hash-strong.css')
58 | });
59 |
60 | stream.on('data', function(file) {
61 | expect(String(file.contents)).to.equal(fs.readFileSync('test/result/style.alt-method-hash-strong.css', 'utf8'));
62 | done();
63 | });
64 |
65 | stream.write(file);
66 | stream.end();
67 | });
68 |
69 | it('Should work with stream (alternative method-hash-strong)', function(done) {
70 | var stream = minify({method: 'hash-strong'});
71 | var file = new File({
72 | path: 'test/fixtures/style.alt-method-hash-strong.css',
73 | cwd: 'test/',
74 | base: 'test/fixtures',
75 | contents: fs.createReadStream('test/fixtures/style.alt-method-hash-strong.css')
76 | });
77 |
78 | stream.on('data', function(file) {
79 | file.contents.pipe(concatStream({encoding: 'string'}, function(data) {
80 | expect(data).to.equal(fs.readFileSync('test/result/style.alt-method-hash-strong.css', 'utf8'));
81 | done();
82 | }));
83 | });
84 |
85 | stream.write(file);
86 | stream.end();
87 | });
88 |
89 | it('Should work with buffer (alternative method-hash-weak)', function(done) {
90 | var stream = minify({method: 'hash-weak'});
91 | var file = new File({
92 | path: 'test/fixtures/style.alt-method-hash-weak.css',
93 | cwd: 'test/',
94 | base: 'test/fixtures',
95 | contents: fs.readFileSync('test/fixtures/style.alt-method-hash-weak.css')
96 | });
97 |
98 | stream.on('data', function(file) {
99 | expect(String(file.contents)).to.equal(fs.readFileSync('test/result/style.alt-method-hash-weak.css', 'utf8'));
100 | done();
101 | });
102 |
103 | stream.write(file);
104 | stream.end();
105 | });
106 |
107 | it('Should work with stream (alternative method-hash-weak)', function(done) {
108 | var stream = minify({method: 'hash-weak'});
109 | var file = new File({
110 | path: 'test/fixtures/style.alt-method-hash-weak.css',
111 | cwd: 'test/',
112 | base: 'test/fixtures',
113 | contents: fs.createReadStream('test/fixtures/style.alt-method-hash-weak.css')
114 | });
115 |
116 | stream.on('data', function(file) {
117 | file.contents.pipe(concatStream({encoding: 'string'}, function(data) {
118 | expect(data).to.equal(fs.readFileSync('test/result/style.alt-method-hash-weak.css', 'utf8'));
119 | done();
120 | }));
121 | });
122 |
123 | stream.write(file);
124 | stream.end();
125 | });
126 |
127 | it('Should work with buffer (alternative postfix)', function(done) {
128 | var stream = minify({postfix: '-alt-postfix-'});
129 | var file = new File({
130 | path: 'test/fixtures/style.alt-postfix.css',
131 | cwd: 'test/',
132 | base: 'test/fixtures',
133 | contents: fs.readFileSync('test/fixtures/style.alt-postfix.css')
134 | });
135 |
136 | stream.on('data', function(file) {
137 | expect(String(file.contents)).to.equal(fs.readFileSync('test/result/style.alt-postfix.css', 'utf8'));
138 | done();
139 | });
140 |
141 | stream.write(file);
142 | stream.end();
143 | });
144 |
145 | it('Should work with stream (alternative postfix)', function(done) {
146 | var stream = minify({postfix: '-alt-postfix-'});
147 | var file = new File({
148 | path: 'test/fixtures/style.alt-postfix.css',
149 | cwd: 'test/',
150 | base: 'test/fixtures',
151 | contents: fs.createReadStream('test/fixtures/style.alt-postfix.css')
152 | });
153 |
154 | stream.on('data', function(file) {
155 | file.contents.pipe(concatStream({encoding: 'string'}, function(data) {
156 | expect(data).to.equal(fs.readFileSync('test/result/style.alt-postfix.css', 'utf8'));
157 | done();
158 | }));
159 | });
160 |
161 | stream.write(file);
162 | stream.end();
163 | });
164 |
165 | it('Should work with buffer (alternative prefix)', function(done) {
166 | var stream = minify({prefix: '-alt-prefix-'});
167 | var file = new File({
168 | path: 'test/fixtures/style.alt-prefix.css',
169 | cwd: 'test/',
170 | base: 'test/fixtures',
171 | contents: fs.readFileSync('test/fixtures/style.alt-prefix.css')
172 | });
173 |
174 | stream.on('data', function(file) {
175 | expect(String(file.contents)).to.equal(fs.readFileSync('test/result/style.alt-prefix.css', 'utf8'));
176 | done();
177 | });
178 |
179 | stream.write(file);
180 | stream.end();
181 | });
182 |
183 | it('Should work with stream (alternative prefix)', function(done) {
184 | var stream = minify({prefix: '-alt-prefix-'});
185 | var file = new File({
186 | path: 'test/fixtures/style.alt-prefix.css',
187 | cwd: 'test/',
188 | base: 'test/fixtures',
189 | contents: fs.createReadStream('test/fixtures/style.alt-prefix.css')
190 | });
191 |
192 | stream.on('data', function(file) {
193 | file.contents.pipe(concatStream({encoding: 'string'}, function(data) {
194 | expect(data).to.equal(fs.readFileSync('test/result/style.alt-prefix.css', 'utf8'));
195 | done();
196 | }));
197 | });
198 |
199 | stream.write(file);
200 | stream.end();
201 | });
202 |
203 | it('Should work with buffer (alternative prepend)', function(done) {
204 | var stream = minify({prefix: '-alt-prepend-', prepend: 'prepend-'});
205 | var file = new File({
206 | path: 'test/fixtures/style.alt-prepend.css',
207 | cwd: 'test/',
208 | base: 'test/fixtures',
209 | contents: fs.readFileSync('test/fixtures/style.alt-prepend.css')
210 | });
211 |
212 | stream.on('data', function(file) {
213 | expect(String(file.contents)).to.equal(fs.readFileSync('test/result/style.alt-prepend.css', 'utf8'));
214 | done();
215 | });
216 |
217 | stream.write(file);
218 | stream.end();
219 | });
220 |
221 | it('Should work with stream (alternative prepend)', function(done) {
222 | var stream = minify({prefix: '-alt-prepend-', prepend: 'prepend-'});
223 | var file = new File({
224 | path: 'test/fixtures/style.alt-prepend.css',
225 | cwd: 'test/',
226 | base: 'test/fixtures',
227 | contents: fs.createReadStream('test/fixtures/style.alt-prepend.css')
228 | });
229 |
230 | stream.on('data', function(file) {
231 | file.contents.pipe(concatStream({encoding: 'string'}, function(data) {
232 | expect(data).to.equal(fs.readFileSync('test/result/style.alt-prepend.css', 'utf8'));
233 | done();
234 | }));
235 | });
236 |
237 | stream.write(file);
238 | stream.end();
239 | });
240 |
241 | it('Should work with buffer (alternative append)', function(done) {
242 | var stream = minify({prefix: '-alt-append-', append: '-append'});
243 | var file = new File({
244 | path: 'test/fixtures/style.alt-append.css',
245 | cwd: 'test/',
246 | base: 'test/fixtures',
247 | contents: fs.readFileSync('test/fixtures/style.alt-append.css')
248 | });
249 |
250 | stream.on('data', function(file) {
251 | expect(String(file.contents)).to.equal(fs.readFileSync('test/result/style.alt-append.css', 'utf8'));
252 | done();
253 | });
254 |
255 | stream.write(file);
256 | stream.end();
257 | });
258 |
259 | it('Should work with stream (alternative append)', function(done) {
260 | var stream = minify({prefix: '-alt-append-', append: '-append'});
261 | var file = new File({
262 | path: 'test/fixtures/style.alt-append.css',
263 | cwd: 'test/',
264 | base: 'test/fixtures',
265 | contents: fs.createReadStream('test/fixtures/style.alt-append.css')
266 | });
267 |
268 | stream.on('data', function(file) {
269 | file.contents.pipe(concatStream({encoding: 'string'}, function(data) {
270 | expect(data).to.equal(fs.readFileSync('test/result/style.alt-append.css', 'utf8'));
271 | done();
272 | }));
273 | });
274 |
275 | stream.write(file);
276 | stream.end();
277 | });
278 |
279 | it('Should work with buffer (alternative buster)', function(done) {
280 | var stream = minify({method: 'hash-weak', buster: 'a1hdo'});
281 | var file = new File({
282 | path: 'test/fixtures/style.alt-buster.css',
283 | cwd: 'test/',
284 | base: 'test/fixtures',
285 | contents: fs.readFileSync('test/fixtures/style.alt-buster.css')
286 | });
287 |
288 | stream.on('data', function(file) {
289 | expect(String(file.contents)).to.equal(fs.readFileSync('test/result/style.alt-buster.css', 'utf8'));
290 | done();
291 | });
292 |
293 | stream.write(file);
294 | stream.end();
295 | });
296 |
297 | it('Should work with stream (alternative buster)', function(done) {
298 | var stream = minify({method: 'hash-weak', buster: 'a1hdo'});
299 | var file = new File({
300 | path: 'test/fixtures/style.alt-buster.css',
301 | cwd: 'test/',
302 | base: 'test/fixtures',
303 | contents: fs.createReadStream('test/fixtures/style.alt-buster.css')
304 | });
305 |
306 | stream.on('data', function(file) {
307 | file.contents.pipe(concatStream({encoding: 'string'}, function(data) {
308 | expect(data).to.equal(fs.readFileSync('test/result/style.alt-buster.css', 'utf8'));
309 | done();
310 | }));
311 | });
312 |
313 | stream.write(file);
314 | stream.end();
315 | });
316 |
317 | it('Should work with group files in real Gulp', function(done) {
318 | var files = ['test/fixtures/group/app.js', 'test/fixtures/group/style.css', 'test/fixtures/group/index.html'];
319 | var count = files.length;
320 | var stream = gulp.src(files)
321 | .pipe(minify())
322 | .pipe(streamAssert.length(count));
323 |
324 | files.forEach(function (item, index) {
325 | stream = stream.pipe(streamAssert.nth(index, function(d) {
326 | expect(String(d.contents)).to.equal(fs.readFileSync(item.replace('fixtures', 'result'), 'utf8'));
327 | if (--count === 0) {
328 | done();
329 | }
330 | }));
331 | });
332 | });
333 |
334 | it('Should work with group files in real Gulp (stream)', function(done) {
335 | var files = ['test/fixtures/group/app.js', 'test/fixtures/group/style.css', 'test/fixtures/group/index.html'];
336 | var count = files.length;
337 | var stream = gulp.src(files, {buffer: false})
338 | .pipe(minify())
339 | .pipe(streamAssert.length(count));
340 |
341 | files.forEach(function (item, index) {
342 | stream = stream.pipe(streamAssert.nth(index, function(d) {
343 | d.contents.pipe(concatStream({encoding: 'string'}, function(data) {
344 | expect(data).to.equal(fs.readFileSync(item.replace('fixtures', 'result'), 'utf8'));
345 | if (--count === 0) {
346 | done();
347 | }
348 | }));
349 | }));
350 | });
351 | });
352 | });
353 |
354 | });
355 |
--------------------------------------------------------------------------------
/test/result/group/app.js:
--------------------------------------------------------------------------------
1 | var $div = document.querySelector('#a0');
2 | $div.id = 'a1';
3 |
--------------------------------------------------------------------------------
/test/result/group/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/test/result/group/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #a2 {
6 | color: green;
7 | }
8 |
9 | #a3 {
10 | color: green;
11 | }
12 |
13 | #a0, #a4 {
14 | color: green;
15 | }
16 |
17 | #a3 {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/result/style.alt-append.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #a0-append {
6 | color: green;
7 | }
8 |
9 | #a1-append {
10 | color: green;
11 | }
12 |
13 | #a2-append, #a3-append {
14 | color: green;
15 | }
16 |
17 | #-pre-test2-post- {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/result/style.alt-buster.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #amvhf6v {
6 | color: green;
7 | }
8 |
9 | #a1wtw2bm {
10 | color: green;
11 | }
12 |
--------------------------------------------------------------------------------
/test/result/style.alt-method-hash-strong.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #a30g5m4tkal400 {
6 | color: green;
7 | }
8 |
9 | #a1c40frncs3wg0 {
10 | color: green;
11 | }
12 |
--------------------------------------------------------------------------------
/test/result/style.alt-method-hash-weak.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #au1sbpl {
6 | color: green;
7 | }
8 |
9 | #a1jci0yc {
10 | color: green;
11 | }
12 |
--------------------------------------------------------------------------------
/test/result/style.alt-postfix.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #a0 {
6 | color: green;
7 | }
8 |
9 | #a1 {
10 | color: green;
11 | }
12 |
13 | #a2, #a3 {
14 | color: green;
15 | }
16 |
17 | #-pre-test2-post- {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/result/style.alt-prefix.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #a0 {
6 | color: green;
7 | }
8 |
9 | #a1 {
10 | color: green;
11 | }
12 |
13 | #a2, #a3 {
14 | color: green;
15 | }
16 |
17 | #-pre-test2-post- {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/result/style.alt-prepend.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #prepend-0 {
6 | color: green;
7 | }
8 |
9 | #prepend-1 {
10 | color: green;
11 | }
12 |
13 | #prepend-2, #prepend-3 {
14 | color: green;
15 | }
16 |
17 | #-pre-test2-post- {width: 100px;}
18 |
--------------------------------------------------------------------------------
/test/result/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: red;
3 | }
4 |
5 | #a0 {
6 | color: green;
7 | }
8 |
9 | #a1 {
10 | color: green;
11 | }
12 |
13 | #a2, #a3 {
14 | color: green;
15 | }
16 |
17 | #a1 {width: 100px;}
18 |
--------------------------------------------------------------------------------