├── .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 | [![Test and Build](https://github.com/valeriansaliou/gulp-minify-css-names/workflows/Test%20and%20Build/badge.svg?branch=master)](https://github.com/valeriansaliou/gulp-minify-css-names/actions?query=workflow%3A%22Test+and+Build%22) [![NPM](https://img.shields.io/npm/v/gulp-minify-css-names.svg)](https://www.npmjs.com/package/gulp-minify-css-names) [![Downloads](https://img.shields.io/npm/dt/gulp-minify-css-names.svg)](https://www.npmjs.com/package/gulp-minify-css-names) [![Buy Me A Coffee](https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg)](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 |
1
65 |
2
66 |
3
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 | --------------------------------------------------------------------------------