├── .editorconfig ├── .gitattributes ├── .gitignore ├── .jshintrc ├── .travis.yml ├── LICENSE ├── README.md ├── examples └── gulpfile.js ├── index.js ├── lib └── git.js ├── package-lock.json ├── package.json └── test ├── fixtures ├── a.txt ├── b.txt └── c.txt ├── git.js └── main.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | 15 | [test/fixtures/*] 16 | insert_final_newline = false 17 | trim_trailing_whitespace = false 18 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | temp/ 4 | npm-debug.log 5 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "esnext": true, 4 | "bitwise": true, 5 | "camelcase": true, 6 | "curly": true, 7 | "eqeqeq": true, 8 | "immed": true, 9 | "indent": 2, 10 | "latedef": true, 11 | "newcap": true, 12 | "noarg": true, 13 | "quotmark": "double", 14 | "regexp": true, 15 | "undef": true, 16 | "unused": true, 17 | "strict": true, 18 | "trailing": true, 19 | "smarttabs": true, 20 | "white": true 21 | } 22 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '8.11.0' 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2014 Mikael Brevik 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gulp-gitmodified 2 | [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][depstat-image]][depstat-url] 3 | 4 | > gitmodified plugin for [gulp](https://github.com/gulpjs/gulp) 5 | 6 | ## Usage 7 | 8 | A plugin for Gulp to get an object stream of git status files on git (e.g. modified, deleted, untracked, etc). 9 | 10 | First, install `gulp-gitmodified` as a development dependency: 11 | 12 | ```shell 13 | npm install --save-dev gulp-gitmodified 14 | ``` 15 | 16 | Then, add it to your `gulpfile.js`: 17 | 18 | ```javascript 19 | var gitmodified = require('gulp-gitmodified'); 20 | 21 | var files = gulp.src('./src/*.ext') 22 | .pipe(gitmodified('modified')); 23 | 24 | files.on('data', function (file) { 25 | console.log('Modified file:', file); 26 | }); 27 | ``` 28 | 29 | ## API 30 | 31 | ### gitmodified(statusMode|options) 32 | 33 | For `statusMode`, you can pass a single string value or an array of string values. 34 | 35 | `gulp-gitmodified` extends the vinyl file format gulp uses to have a method 36 | for checking if file is deleted. `isDeleted` is true if checking for deleted 37 | files (see below), and false otherwise. 38 | 39 | #### `options` 40 | 41 | `gitCwd` can be used to override from which directory 42 | git should be executed. This is handy in case you have your gulpfile in a 43 | different directory than your where your repo resides. 44 | 45 | `stagedOnly` can be used to process only staged files. 46 | 47 | ``` 48 | // Options can be the following: 49 | { 50 | gitCwd: String, 51 | stagedOnly: Boolean, 52 | modes: statusMode 53 | } 54 | ``` 55 | 56 | `modes` is the value from below. If not defined it will default to `modified`. 57 | 58 | #### statusMode 59 | 60 | Type: `String` || `Array` 61 | Default: 'modified' 62 | 63 | What status mode to look for. From git documentation: 64 | 65 | ``` 66 | M = modified 67 | A = added 68 | D = deleted 69 | R = renamed 70 | C = copied 71 | U = updated but unmerged 72 | ?? = untracked 73 | !! = ignored 74 | ``` 75 | 76 | (and more if in short format (e.g. AM), see Short Format on [git status man page](https://www.kernel.org/pub/software/scm/git/docs/git-status.html)) 77 | 78 | #### Examples 79 | 80 | ```javascript 81 | // All added files 82 | gulp.src('./**/*') 83 | .pipe(gitmodified('added')) 84 | ``` 85 | 86 | ```javascript 87 | // Equal to the one before 88 | gulp.src('./**/*') 89 | .pipe(gitmodified('A')) 90 | ``` 91 | 92 | ```javascript 93 | // All added and modified files 94 | gulp.src('./**/*') 95 | .pipe(gitmodified(['added', 'modified'])) 96 | ``` 97 | 98 | ```javascript 99 | // All added and modified staged files, from different git directory 100 | gulp.src('./**/*') 101 | .pipe(gitmodified({ 102 | modes: ['added', 'modified'], 103 | stagedOnly: true, 104 | gitCwd: '../../differentDirectory' 105 | })) 106 | ``` 107 | 108 | ```javascript 109 | // All deleted files. 110 | gulp.src('./**/*') 111 | .pipe(gitmodified('deleted')) 112 | .on('data', function (file) { 113 | console.log(file.isDeleted()); //=> true 114 | }); 115 | ``` 116 | 117 | ## License 118 | 119 | [MIT License](http://en.wikipedia.org/wiki/MIT_License) 120 | 121 | [npm-url]: https://npmjs.org/package/gulp-gitmodified 122 | [npm-image]: https://badge.fury.io/js/gulp-gitmodified.png 123 | 124 | [travis-url]: http://travis-ci.org/mikaelbr/gulp-gitmodified 125 | [travis-image]: https://secure.travis-ci.org/mikaelbr/gulp-gitmodified.png?branch=master 126 | 127 | [depstat-url]: https://david-dm.org/mikaelbr/gulp-gitmodified 128 | [depstat-image]: https://david-dm.org/mikaelbr/gulp-gitmodified.png 129 | -------------------------------------------------------------------------------- /examples/gulpfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'), 4 | through = require('through2'), 5 | gitmodified = require('../'); 6 | 7 | gulp.task('foo', function () { 8 | gulp.src(['../**/*', '!../node_modules/**']) 9 | .pipe(through.obj(function (file, enc, cb) { 10 | this.push(file); 11 | return cb(); 12 | })) 13 | .pipe(gitmodified()) 14 | .on('error', function (err) { 15 | console.log(err); 16 | }) 17 | .pipe(through.obj(function (file, enc, cb) { 18 | console.log('Modified: ', file.relative); 19 | this.push(file); 20 | return cb(); 21 | })); 22 | }); 23 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var through = require('through2'), 2 | find = require('lodash.find'), 3 | PluginError = require('plugin-error'), 4 | git = require('./lib/git'), 5 | path = require('path'), 6 | File = require('vinyl'); 7 | 8 | module.exports = function (modes) { 9 | 'use strict'; 10 | var options = { 11 | stagedOnly: false, 12 | }; 13 | 14 | var files = null, 15 | regexTest, 16 | modeMapping = { 17 | modified: 'M', 18 | added: 'A', 19 | deleted: 'D', 20 | renamed: 'R', 21 | copied: 'C', 22 | updated: 'U', 23 | untracked: '??', 24 | ignored: '!!' 25 | }; 26 | 27 | if (typeof modes === 'object' && (!!modes.modes || !!modes.gitCwd)) { 28 | options = modes; 29 | modes = modes.modes || []; 30 | } 31 | if (!Array.isArray(modes)) modes = [modes]; 32 | 33 | modes = modes.reduce(function(acc, mode) { 34 | var mappedMode; 35 | if (typeof mode !== 'string') return acc; 36 | mappedMode = modeMapping[mode.trim().toLowerCase()] || mode; 37 | return acc.concat(mappedMode.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')); 38 | }, []); 39 | 40 | if (!modes.length) modes = ['M']; 41 | 42 | regexTest = new RegExp('^('+modes.join('|')+')\\s', 'i'); 43 | 44 | var gitmodified = function (file, enc, callback) { 45 | var stream = this; 46 | 47 | var checkStatus = function () { 48 | var isIn = !!find(files, function (fileLine) { 49 | var line = path.normalize(fileLine.path); 50 | if (line.substring(line.length, line.length - 1)) { 51 | return file.path.indexOf(line.substring(0, line.length - 1)) !== -1; 52 | } 53 | return file.path.indexOf(line) !== -1; 54 | }); 55 | 56 | if (isIn) { 57 | setDeleted(file, false); 58 | stream.push(file); 59 | } 60 | return callback(); 61 | }; 62 | 63 | if (!!files) { 64 | return checkStatus(); 65 | } 66 | git.getStatusByMatcher(regexTest, options.gitCwd, options.stagedOnly, function (err, statusFiles) { 67 | if (err) { 68 | stream.emit('error', new PluginError('gulp-gitmodified', err)); 69 | return callback(); 70 | } 71 | files = statusFiles; 72 | 73 | // Deleted files. Make into vinyl files 74 | files.forEach(function(file) { 75 | if (file.mode !== 'D') return; 76 | stream.push(makeVinylFile(file.path)); 77 | }); 78 | 79 | checkStatus(); 80 | }); 81 | }; 82 | 83 | return through.obj(gitmodified, function (callback) { 84 | files = null; 85 | return callback(); 86 | }); 87 | }; 88 | 89 | function makeVinylFile (path) { 90 | var file = new File({ 91 | path: path, 92 | contents: null 93 | }); 94 | setDeleted(file, true); 95 | return file; 96 | } 97 | 98 | function setDeleted (file, isDeleted) { 99 | file.isDeleted = function () { return !!isDeleted; }; 100 | } 101 | -------------------------------------------------------------------------------- /lib/git.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var exec = require('child_process').execFile, 4 | which = require('which'); 5 | 6 | var gitApp = 'git', 7 | gitExtra = {env: process.env}; 8 | 9 | var Git = function () { }; 10 | 11 | Git.prototype.exec = function (app, args, extra, cb) { 12 | return exec(app, args, extra, cb); 13 | }; 14 | 15 | Git.prototype.which = function (app, cb) { 16 | return which(app, cb); 17 | }; 18 | 19 | Git.prototype.getStatusByMatcher = function (matcher, baseDir, stagedOnly, cb) { 20 | var that = this; 21 | if (typeof baseDir === 'function') { 22 | cb = baseDir; 23 | baseDir = void 0; 24 | } 25 | var gitExtraOptions = gitExtra; 26 | if (baseDir) { 27 | gitExtraOptions = { 28 | env: gitExtra.env, 29 | cwd: baseDir 30 | }; 31 | } 32 | 33 | that.which(gitApp, function (err) { 34 | if (err) { 35 | return cb(new Error('git not found on your system.')); 36 | } 37 | that.exec(gitApp, [ 'status', '--porcelain' ], gitExtraOptions, function (err, stdout) { 38 | if (err) { 39 | return cb(new Error('Could not get git status --porcelain')); 40 | } 41 | // partly inspired and taken from NPM version module 42 | var lines = stdout.split('\n').filter(function (line) { 43 | if (!stagedOnly) { 44 | // staged files doesn't have space in front 45 | line = line.trim(); 46 | } 47 | return line && matcher.test(line); 48 | }).map(function (line) { 49 | return { 50 | mode: matcher.exec(line.trim())[0].trim(), 51 | path: line.trim().replace(matcher, '').trim() 52 | }; 53 | }); 54 | return cb(null, lines); 55 | }); 56 | }); 57 | }; 58 | 59 | module.exports = new Git(); 60 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gulp-gitmodified", 3 | "version": "1.1.2", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ansi-colors": { 8 | "version": "1.1.0", 9 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", 10 | "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", 11 | "requires": { 12 | "ansi-wrap": "^0.1.0" 13 | } 14 | }, 15 | "ansi-gray": { 16 | "version": "0.1.1", 17 | "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", 18 | "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", 19 | "dev": true, 20 | "requires": { 21 | "ansi-wrap": "0.1.0" 22 | } 23 | }, 24 | "ansi-regex": { 25 | "version": "2.1.1", 26 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 27 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 28 | "dev": true 29 | }, 30 | "ansi-styles": { 31 | "version": "2.2.1", 32 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 33 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 34 | "dev": true 35 | }, 36 | "ansi-wrap": { 37 | "version": "0.1.0", 38 | "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", 39 | "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" 40 | }, 41 | "archy": { 42 | "version": "1.0.0", 43 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 44 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 45 | "dev": true 46 | }, 47 | "arr-diff": { 48 | "version": "4.0.0", 49 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 50 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" 51 | }, 52 | "arr-flatten": { 53 | "version": "1.1.0", 54 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 55 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 56 | "dev": true 57 | }, 58 | "arr-union": { 59 | "version": "3.1.0", 60 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 61 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" 62 | }, 63 | "array-differ": { 64 | "version": "1.0.0", 65 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", 66 | "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", 67 | "dev": true 68 | }, 69 | "array-each": { 70 | "version": "1.0.1", 71 | "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", 72 | "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", 73 | "dev": true 74 | }, 75 | "array-slice": { 76 | "version": "1.1.0", 77 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", 78 | "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", 79 | "dev": true 80 | }, 81 | "array-uniq": { 82 | "version": "1.0.3", 83 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 84 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 85 | "dev": true 86 | }, 87 | "array-unique": { 88 | "version": "0.3.2", 89 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 90 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 91 | "dev": true 92 | }, 93 | "assign-symbols": { 94 | "version": "1.0.0", 95 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 96 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" 97 | }, 98 | "atob": { 99 | "version": "2.1.1", 100 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", 101 | "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", 102 | "dev": true 103 | }, 104 | "balanced-match": { 105 | "version": "1.0.0", 106 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 107 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 108 | "dev": true 109 | }, 110 | "base": { 111 | "version": "0.11.2", 112 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 113 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 114 | "dev": true, 115 | "requires": { 116 | "cache-base": "^1.0.1", 117 | "class-utils": "^0.3.5", 118 | "component-emitter": "^1.2.1", 119 | "define-property": "^1.0.0", 120 | "isobject": "^3.0.1", 121 | "mixin-deep": "^1.2.0", 122 | "pascalcase": "^0.1.1" 123 | }, 124 | "dependencies": { 125 | "define-property": { 126 | "version": "1.0.0", 127 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 128 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 129 | "dev": true, 130 | "requires": { 131 | "is-descriptor": "^1.0.0" 132 | } 133 | }, 134 | "is-accessor-descriptor": { 135 | "version": "1.0.0", 136 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 137 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 138 | "dev": true, 139 | "requires": { 140 | "kind-of": "^6.0.0" 141 | } 142 | }, 143 | "is-data-descriptor": { 144 | "version": "1.0.0", 145 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 146 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 147 | "dev": true, 148 | "requires": { 149 | "kind-of": "^6.0.0" 150 | } 151 | }, 152 | "is-descriptor": { 153 | "version": "1.0.2", 154 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 155 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 156 | "dev": true, 157 | "requires": { 158 | "is-accessor-descriptor": "^1.0.0", 159 | "is-data-descriptor": "^1.0.0", 160 | "kind-of": "^6.0.2" 161 | } 162 | } 163 | } 164 | }, 165 | "beeper": { 166 | "version": "1.1.1", 167 | "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", 168 | "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", 169 | "dev": true 170 | }, 171 | "brace-expansion": { 172 | "version": "1.1.11", 173 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 174 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 175 | "dev": true, 176 | "requires": { 177 | "balanced-match": "^1.0.0", 178 | "concat-map": "0.0.1" 179 | } 180 | }, 181 | "braces": { 182 | "version": "2.3.2", 183 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 184 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 185 | "dev": true, 186 | "requires": { 187 | "arr-flatten": "^1.1.0", 188 | "array-unique": "^0.3.2", 189 | "extend-shallow": "^2.0.1", 190 | "fill-range": "^4.0.0", 191 | "isobject": "^3.0.1", 192 | "repeat-element": "^1.1.2", 193 | "snapdragon": "^0.8.1", 194 | "snapdragon-node": "^2.0.1", 195 | "split-string": "^3.0.2", 196 | "to-regex": "^3.0.1" 197 | }, 198 | "dependencies": { 199 | "extend-shallow": { 200 | "version": "2.0.1", 201 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 202 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 203 | "dev": true, 204 | "requires": { 205 | "is-extendable": "^0.1.0" 206 | } 207 | }, 208 | "is-extendable": { 209 | "version": "0.1.1", 210 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 211 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 212 | "dev": true 213 | } 214 | } 215 | }, 216 | "browser-stdout": { 217 | "version": "1.3.1", 218 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 219 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 220 | "dev": true 221 | }, 222 | "cache-base": { 223 | "version": "1.0.1", 224 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 225 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 226 | "dev": true, 227 | "requires": { 228 | "collection-visit": "^1.0.0", 229 | "component-emitter": "^1.2.1", 230 | "get-value": "^2.0.6", 231 | "has-value": "^1.0.0", 232 | "isobject": "^3.0.1", 233 | "set-value": "^2.0.0", 234 | "to-object-path": "^0.3.0", 235 | "union-value": "^1.0.0", 236 | "unset-value": "^1.0.0" 237 | } 238 | }, 239 | "chalk": { 240 | "version": "1.1.3", 241 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 242 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 243 | "dev": true, 244 | "requires": { 245 | "ansi-styles": "^2.2.1", 246 | "escape-string-regexp": "^1.0.2", 247 | "has-ansi": "^2.0.0", 248 | "strip-ansi": "^3.0.0", 249 | "supports-color": "^2.0.0" 250 | } 251 | }, 252 | "class-utils": { 253 | "version": "0.3.6", 254 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 255 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 256 | "dev": true, 257 | "requires": { 258 | "arr-union": "^3.1.0", 259 | "define-property": "^0.2.5", 260 | "isobject": "^3.0.0", 261 | "static-extend": "^0.1.1" 262 | }, 263 | "dependencies": { 264 | "define-property": { 265 | "version": "0.2.5", 266 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 267 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 268 | "dev": true, 269 | "requires": { 270 | "is-descriptor": "^0.1.0" 271 | } 272 | } 273 | } 274 | }, 275 | "cli": { 276 | "version": "1.0.1", 277 | "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", 278 | "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", 279 | "dev": true, 280 | "requires": { 281 | "exit": "0.1.2", 282 | "glob": "^7.1.1" 283 | }, 284 | "dependencies": { 285 | "glob": { 286 | "version": "7.1.2", 287 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 288 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 289 | "dev": true, 290 | "requires": { 291 | "fs.realpath": "^1.0.0", 292 | "inflight": "^1.0.4", 293 | "inherits": "2", 294 | "minimatch": "^3.0.4", 295 | "once": "^1.3.0", 296 | "path-is-absolute": "^1.0.0" 297 | } 298 | }, 299 | "minimatch": { 300 | "version": "3.0.4", 301 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 302 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 303 | "dev": true, 304 | "requires": { 305 | "brace-expansion": "^1.1.7" 306 | } 307 | } 308 | } 309 | }, 310 | "clone": { 311 | "version": "2.1.1", 312 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", 313 | "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" 314 | }, 315 | "clone-buffer": { 316 | "version": "1.0.0", 317 | "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", 318 | "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" 319 | }, 320 | "clone-stats": { 321 | "version": "1.0.0", 322 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", 323 | "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" 324 | }, 325 | "cloneable-readable": { 326 | "version": "1.1.2", 327 | "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", 328 | "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", 329 | "requires": { 330 | "inherits": "^2.0.1", 331 | "process-nextick-args": "^2.0.0", 332 | "readable-stream": "^2.3.5" 333 | } 334 | }, 335 | "collection-visit": { 336 | "version": "1.0.0", 337 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 338 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 339 | "dev": true, 340 | "requires": { 341 | "map-visit": "^1.0.0", 342 | "object-visit": "^1.0.0" 343 | } 344 | }, 345 | "color-support": { 346 | "version": "1.1.3", 347 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 348 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 349 | "dev": true 350 | }, 351 | "commander": { 352 | "version": "2.15.1", 353 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", 354 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", 355 | "dev": true 356 | }, 357 | "component-emitter": { 358 | "version": "1.2.1", 359 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 360 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", 361 | "dev": true 362 | }, 363 | "concat-map": { 364 | "version": "0.0.1", 365 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 366 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 367 | "dev": true 368 | }, 369 | "console-browserify": { 370 | "version": "1.1.0", 371 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 372 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", 373 | "dev": true, 374 | "requires": { 375 | "date-now": "^0.1.4" 376 | } 377 | }, 378 | "copy-descriptor": { 379 | "version": "0.1.1", 380 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 381 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 382 | "dev": true 383 | }, 384 | "core-util-is": { 385 | "version": "1.0.2", 386 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 387 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 388 | }, 389 | "date-now": { 390 | "version": "0.1.4", 391 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 392 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", 393 | "dev": true 394 | }, 395 | "dateformat": { 396 | "version": "2.2.0", 397 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", 398 | "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", 399 | "dev": true 400 | }, 401 | "debug": { 402 | "version": "2.6.9", 403 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 404 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 405 | "dev": true, 406 | "requires": { 407 | "ms": "2.0.0" 408 | } 409 | }, 410 | "decode-uri-component": { 411 | "version": "0.2.0", 412 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 413 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 414 | "dev": true 415 | }, 416 | "defaults": { 417 | "version": "1.0.3", 418 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 419 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 420 | "dev": true, 421 | "requires": { 422 | "clone": "^1.0.2" 423 | }, 424 | "dependencies": { 425 | "clone": { 426 | "version": "1.0.4", 427 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 428 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", 429 | "dev": true 430 | } 431 | } 432 | }, 433 | "define-property": { 434 | "version": "2.0.2", 435 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 436 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 437 | "dev": true, 438 | "requires": { 439 | "is-descriptor": "^1.0.2", 440 | "isobject": "^3.0.1" 441 | }, 442 | "dependencies": { 443 | "is-accessor-descriptor": { 444 | "version": "1.0.0", 445 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 446 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 447 | "dev": true, 448 | "requires": { 449 | "kind-of": "^6.0.0" 450 | } 451 | }, 452 | "is-data-descriptor": { 453 | "version": "1.0.0", 454 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 455 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 456 | "dev": true, 457 | "requires": { 458 | "kind-of": "^6.0.0" 459 | } 460 | }, 461 | "is-descriptor": { 462 | "version": "1.0.2", 463 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 464 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 465 | "dev": true, 466 | "requires": { 467 | "is-accessor-descriptor": "^1.0.0", 468 | "is-data-descriptor": "^1.0.0", 469 | "kind-of": "^6.0.2" 470 | } 471 | } 472 | } 473 | }, 474 | "deprecated": { 475 | "version": "0.0.1", 476 | "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", 477 | "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", 478 | "dev": true 479 | }, 480 | "detect-file": { 481 | "version": "1.0.0", 482 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", 483 | "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", 484 | "dev": true 485 | }, 486 | "diff": { 487 | "version": "3.5.0", 488 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 489 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 490 | "dev": true 491 | }, 492 | "dom-serializer": { 493 | "version": "0.1.0", 494 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", 495 | "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", 496 | "dev": true, 497 | "requires": { 498 | "domelementtype": "~1.1.1", 499 | "entities": "~1.1.1" 500 | }, 501 | "dependencies": { 502 | "domelementtype": { 503 | "version": "1.1.3", 504 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", 505 | "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", 506 | "dev": true 507 | }, 508 | "entities": { 509 | "version": "1.1.1", 510 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", 511 | "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", 512 | "dev": true 513 | } 514 | } 515 | }, 516 | "domelementtype": { 517 | "version": "1.3.0", 518 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", 519 | "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", 520 | "dev": true 521 | }, 522 | "domhandler": { 523 | "version": "2.3.0", 524 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", 525 | "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", 526 | "dev": true, 527 | "requires": { 528 | "domelementtype": "1" 529 | } 530 | }, 531 | "domutils": { 532 | "version": "1.5.1", 533 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 534 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 535 | "dev": true, 536 | "requires": { 537 | "dom-serializer": "0", 538 | "domelementtype": "1" 539 | } 540 | }, 541 | "duplexer2": { 542 | "version": "0.0.2", 543 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", 544 | "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", 545 | "dev": true, 546 | "requires": { 547 | "readable-stream": "~1.1.9" 548 | }, 549 | "dependencies": { 550 | "isarray": { 551 | "version": "0.0.1", 552 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 553 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 554 | "dev": true 555 | }, 556 | "readable-stream": { 557 | "version": "1.1.14", 558 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 559 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 560 | "dev": true, 561 | "requires": { 562 | "core-util-is": "~1.0.0", 563 | "inherits": "~2.0.1", 564 | "isarray": "0.0.1", 565 | "string_decoder": "~0.10.x" 566 | } 567 | }, 568 | "string_decoder": { 569 | "version": "0.10.31", 570 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 571 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 572 | "dev": true 573 | } 574 | } 575 | }, 576 | "end-of-stream": { 577 | "version": "0.1.5", 578 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", 579 | "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", 580 | "dev": true, 581 | "requires": { 582 | "once": "~1.3.0" 583 | } 584 | }, 585 | "entities": { 586 | "version": "1.0.0", 587 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", 588 | "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", 589 | "dev": true 590 | }, 591 | "escape-string-regexp": { 592 | "version": "1.0.5", 593 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 594 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 595 | "dev": true 596 | }, 597 | "exit": { 598 | "version": "0.1.2", 599 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 600 | "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", 601 | "dev": true 602 | }, 603 | "expand-brackets": { 604 | "version": "2.1.4", 605 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 606 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 607 | "dev": true, 608 | "requires": { 609 | "debug": "^2.3.3", 610 | "define-property": "^0.2.5", 611 | "extend-shallow": "^2.0.1", 612 | "posix-character-classes": "^0.1.0", 613 | "regex-not": "^1.0.0", 614 | "snapdragon": "^0.8.1", 615 | "to-regex": "^3.0.1" 616 | }, 617 | "dependencies": { 618 | "define-property": { 619 | "version": "0.2.5", 620 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 621 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 622 | "dev": true, 623 | "requires": { 624 | "is-descriptor": "^0.1.0" 625 | } 626 | }, 627 | "extend-shallow": { 628 | "version": "2.0.1", 629 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 630 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 631 | "dev": true, 632 | "requires": { 633 | "is-extendable": "^0.1.0" 634 | } 635 | }, 636 | "is-extendable": { 637 | "version": "0.1.1", 638 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 639 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 640 | "dev": true 641 | } 642 | } 643 | }, 644 | "expand-tilde": { 645 | "version": "2.0.2", 646 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 647 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 648 | "dev": true, 649 | "requires": { 650 | "homedir-polyfill": "^1.0.1" 651 | } 652 | }, 653 | "extend": { 654 | "version": "3.0.1", 655 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 656 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", 657 | "dev": true 658 | }, 659 | "extend-shallow": { 660 | "version": "3.0.2", 661 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 662 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 663 | "requires": { 664 | "assign-symbols": "^1.0.0", 665 | "is-extendable": "^1.0.1" 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 | "is-extendable": { 732 | "version": "0.1.1", 733 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 734 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 735 | "dev": true 736 | } 737 | } 738 | }, 739 | "fancy-log": { 740 | "version": "1.3.2", 741 | "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", 742 | "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", 743 | "dev": true, 744 | "requires": { 745 | "ansi-gray": "^0.1.1", 746 | "color-support": "^1.1.3", 747 | "time-stamp": "^1.0.0" 748 | } 749 | }, 750 | "fill-range": { 751 | "version": "4.0.0", 752 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 753 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 754 | "dev": true, 755 | "requires": { 756 | "extend-shallow": "^2.0.1", 757 | "is-number": "^3.0.0", 758 | "repeat-string": "^1.6.1", 759 | "to-regex-range": "^2.1.0" 760 | }, 761 | "dependencies": { 762 | "extend-shallow": { 763 | "version": "2.0.1", 764 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 765 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 766 | "dev": true, 767 | "requires": { 768 | "is-extendable": "^0.1.0" 769 | } 770 | }, 771 | "is-extendable": { 772 | "version": "0.1.1", 773 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 774 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 775 | "dev": true 776 | } 777 | } 778 | }, 779 | "find-index": { 780 | "version": "0.1.1", 781 | "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", 782 | "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", 783 | "dev": true 784 | }, 785 | "findup-sync": { 786 | "version": "2.0.0", 787 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", 788 | "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", 789 | "dev": true, 790 | "requires": { 791 | "detect-file": "^1.0.0", 792 | "is-glob": "^3.1.0", 793 | "micromatch": "^3.0.4", 794 | "resolve-dir": "^1.0.1" 795 | } 796 | }, 797 | "fined": { 798 | "version": "1.1.0", 799 | "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", 800 | "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", 801 | "dev": true, 802 | "requires": { 803 | "expand-tilde": "^2.0.2", 804 | "is-plain-object": "^2.0.3", 805 | "object.defaults": "^1.1.0", 806 | "object.pick": "^1.2.0", 807 | "parse-filepath": "^1.0.1" 808 | } 809 | }, 810 | "first-chunk-stream": { 811 | "version": "1.0.0", 812 | "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", 813 | "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", 814 | "dev": true 815 | }, 816 | "flagged-respawn": { 817 | "version": "1.0.0", 818 | "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", 819 | "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", 820 | "dev": true 821 | }, 822 | "for-in": { 823 | "version": "1.0.2", 824 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 825 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 826 | "dev": true 827 | }, 828 | "for-own": { 829 | "version": "1.0.0", 830 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 831 | "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", 832 | "dev": true, 833 | "requires": { 834 | "for-in": "^1.0.1" 835 | } 836 | }, 837 | "fragment-cache": { 838 | "version": "0.2.1", 839 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 840 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 841 | "dev": true, 842 | "requires": { 843 | "map-cache": "^0.2.2" 844 | } 845 | }, 846 | "fs.realpath": { 847 | "version": "1.0.0", 848 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 849 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 850 | "dev": true 851 | }, 852 | "gaze": { 853 | "version": "0.5.2", 854 | "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", 855 | "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", 856 | "dev": true, 857 | "requires": { 858 | "globule": "~0.1.0" 859 | } 860 | }, 861 | "get-value": { 862 | "version": "2.0.6", 863 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 864 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 865 | "dev": true 866 | }, 867 | "glob": { 868 | "version": "4.5.3", 869 | "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", 870 | "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", 871 | "dev": true, 872 | "requires": { 873 | "inflight": "^1.0.4", 874 | "inherits": "2", 875 | "minimatch": "^2.0.1", 876 | "once": "^1.3.0" 877 | } 878 | }, 879 | "glob-stream": { 880 | "version": "3.1.18", 881 | "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", 882 | "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", 883 | "dev": true, 884 | "requires": { 885 | "glob": "^4.3.1", 886 | "glob2base": "^0.0.12", 887 | "minimatch": "^2.0.1", 888 | "ordered-read-streams": "^0.1.0", 889 | "through2": "^0.6.1", 890 | "unique-stream": "^1.0.0" 891 | }, 892 | "dependencies": { 893 | "isarray": { 894 | "version": "0.0.1", 895 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 896 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 897 | "dev": true 898 | }, 899 | "readable-stream": { 900 | "version": "1.0.34", 901 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 902 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 903 | "dev": true, 904 | "requires": { 905 | "core-util-is": "~1.0.0", 906 | "inherits": "~2.0.1", 907 | "isarray": "0.0.1", 908 | "string_decoder": "~0.10.x" 909 | } 910 | }, 911 | "string_decoder": { 912 | "version": "0.10.31", 913 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 914 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 915 | "dev": true 916 | }, 917 | "through2": { 918 | "version": "0.6.5", 919 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 920 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 921 | "dev": true, 922 | "requires": { 923 | "readable-stream": ">=1.0.33-1 <1.1.0-0", 924 | "xtend": ">=4.0.0 <4.1.0-0" 925 | } 926 | } 927 | } 928 | }, 929 | "glob-watcher": { 930 | "version": "0.0.6", 931 | "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", 932 | "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", 933 | "dev": true, 934 | "requires": { 935 | "gaze": "^0.5.1" 936 | } 937 | }, 938 | "glob2base": { 939 | "version": "0.0.12", 940 | "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", 941 | "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", 942 | "dev": true, 943 | "requires": { 944 | "find-index": "^0.1.1" 945 | } 946 | }, 947 | "global-modules": { 948 | "version": "1.0.0", 949 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", 950 | "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", 951 | "dev": true, 952 | "requires": { 953 | "global-prefix": "^1.0.1", 954 | "is-windows": "^1.0.1", 955 | "resolve-dir": "^1.0.0" 956 | } 957 | }, 958 | "global-prefix": { 959 | "version": "1.0.2", 960 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", 961 | "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", 962 | "dev": true, 963 | "requires": { 964 | "expand-tilde": "^2.0.2", 965 | "homedir-polyfill": "^1.0.1", 966 | "ini": "^1.3.4", 967 | "is-windows": "^1.0.1", 968 | "which": "^1.2.14" 969 | } 970 | }, 971 | "globule": { 972 | "version": "0.1.0", 973 | "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", 974 | "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", 975 | "dev": true, 976 | "requires": { 977 | "glob": "~3.1.21", 978 | "lodash": "~1.0.1", 979 | "minimatch": "~0.2.11" 980 | }, 981 | "dependencies": { 982 | "glob": { 983 | "version": "3.1.21", 984 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", 985 | "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", 986 | "dev": true, 987 | "requires": { 988 | "graceful-fs": "~1.2.0", 989 | "inherits": "1", 990 | "minimatch": "~0.2.11" 991 | } 992 | }, 993 | "graceful-fs": { 994 | "version": "1.2.3", 995 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", 996 | "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", 997 | "dev": true 998 | }, 999 | "inherits": { 1000 | "version": "1.0.2", 1001 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", 1002 | "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", 1003 | "dev": true 1004 | }, 1005 | "minimatch": { 1006 | "version": "0.2.14", 1007 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", 1008 | "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", 1009 | "dev": true, 1010 | "requires": { 1011 | "lru-cache": "2", 1012 | "sigmund": "~1.0.0" 1013 | } 1014 | } 1015 | } 1016 | }, 1017 | "glogg": { 1018 | "version": "1.0.1", 1019 | "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", 1020 | "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", 1021 | "dev": true, 1022 | "requires": { 1023 | "sparkles": "^1.0.0" 1024 | } 1025 | }, 1026 | "graceful-fs": { 1027 | "version": "3.0.11", 1028 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", 1029 | "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", 1030 | "dev": true, 1031 | "requires": { 1032 | "natives": "^1.1.0" 1033 | } 1034 | }, 1035 | "growl": { 1036 | "version": "1.10.5", 1037 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 1038 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 1039 | "dev": true 1040 | }, 1041 | "gulp": { 1042 | "version": "3.9.1", 1043 | "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", 1044 | "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", 1045 | "dev": true, 1046 | "requires": { 1047 | "archy": "^1.0.0", 1048 | "chalk": "^1.0.0", 1049 | "deprecated": "^0.0.1", 1050 | "gulp-util": "^3.0.0", 1051 | "interpret": "^1.0.0", 1052 | "liftoff": "^2.1.0", 1053 | "minimist": "^1.1.0", 1054 | "orchestrator": "^0.3.0", 1055 | "pretty-hrtime": "^1.0.0", 1056 | "semver": "^4.1.0", 1057 | "tildify": "^1.0.0", 1058 | "v8flags": "^2.0.2", 1059 | "vinyl-fs": "^0.3.0" 1060 | } 1061 | }, 1062 | "gulp-util": { 1063 | "version": "3.0.8", 1064 | "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", 1065 | "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", 1066 | "dev": true, 1067 | "requires": { 1068 | "array-differ": "^1.0.0", 1069 | "array-uniq": "^1.0.2", 1070 | "beeper": "^1.0.0", 1071 | "chalk": "^1.0.0", 1072 | "dateformat": "^2.0.0", 1073 | "fancy-log": "^1.1.0", 1074 | "gulplog": "^1.0.0", 1075 | "has-gulplog": "^0.1.0", 1076 | "lodash._reescape": "^3.0.0", 1077 | "lodash._reevaluate": "^3.0.0", 1078 | "lodash._reinterpolate": "^3.0.0", 1079 | "lodash.template": "^3.0.0", 1080 | "minimist": "^1.1.0", 1081 | "multipipe": "^0.1.2", 1082 | "object-assign": "^3.0.0", 1083 | "replace-ext": "0.0.1", 1084 | "through2": "^2.0.0", 1085 | "vinyl": "^0.5.0" 1086 | }, 1087 | "dependencies": { 1088 | "clone": { 1089 | "version": "1.0.4", 1090 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 1091 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", 1092 | "dev": true 1093 | }, 1094 | "clone-stats": { 1095 | "version": "0.0.1", 1096 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", 1097 | "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", 1098 | "dev": true 1099 | }, 1100 | "replace-ext": { 1101 | "version": "0.0.1", 1102 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", 1103 | "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", 1104 | "dev": true 1105 | }, 1106 | "vinyl": { 1107 | "version": "0.5.3", 1108 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", 1109 | "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", 1110 | "dev": true, 1111 | "requires": { 1112 | "clone": "^1.0.0", 1113 | "clone-stats": "^0.0.1", 1114 | "replace-ext": "0.0.1" 1115 | } 1116 | } 1117 | } 1118 | }, 1119 | "gulplog": { 1120 | "version": "1.0.0", 1121 | "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", 1122 | "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", 1123 | "dev": true, 1124 | "requires": { 1125 | "glogg": "^1.0.0" 1126 | } 1127 | }, 1128 | "has-ansi": { 1129 | "version": "2.0.0", 1130 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1131 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1132 | "dev": true, 1133 | "requires": { 1134 | "ansi-regex": "^2.0.0" 1135 | } 1136 | }, 1137 | "has-flag": { 1138 | "version": "3.0.0", 1139 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1140 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1141 | "dev": true 1142 | }, 1143 | "has-gulplog": { 1144 | "version": "0.1.0", 1145 | "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", 1146 | "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", 1147 | "dev": true, 1148 | "requires": { 1149 | "sparkles": "^1.0.0" 1150 | } 1151 | }, 1152 | "has-value": { 1153 | "version": "1.0.0", 1154 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 1155 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 1156 | "dev": true, 1157 | "requires": { 1158 | "get-value": "^2.0.6", 1159 | "has-values": "^1.0.0", 1160 | "isobject": "^3.0.0" 1161 | } 1162 | }, 1163 | "has-values": { 1164 | "version": "1.0.0", 1165 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 1166 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 1167 | "dev": true, 1168 | "requires": { 1169 | "is-number": "^3.0.0", 1170 | "kind-of": "^4.0.0" 1171 | }, 1172 | "dependencies": { 1173 | "kind-of": { 1174 | "version": "4.0.0", 1175 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 1176 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1177 | "dev": true, 1178 | "requires": { 1179 | "is-buffer": "^1.1.5" 1180 | } 1181 | } 1182 | } 1183 | }, 1184 | "he": { 1185 | "version": "1.1.1", 1186 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 1187 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", 1188 | "dev": true 1189 | }, 1190 | "homedir-polyfill": { 1191 | "version": "1.0.1", 1192 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", 1193 | "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", 1194 | "dev": true, 1195 | "requires": { 1196 | "parse-passwd": "^1.0.0" 1197 | } 1198 | }, 1199 | "htmlparser2": { 1200 | "version": "3.8.3", 1201 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", 1202 | "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", 1203 | "dev": true, 1204 | "requires": { 1205 | "domelementtype": "1", 1206 | "domhandler": "2.3", 1207 | "domutils": "1.5", 1208 | "entities": "1.0", 1209 | "readable-stream": "1.1" 1210 | }, 1211 | "dependencies": { 1212 | "isarray": { 1213 | "version": "0.0.1", 1214 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1215 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 1216 | "dev": true 1217 | }, 1218 | "readable-stream": { 1219 | "version": "1.1.14", 1220 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 1221 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 1222 | "dev": true, 1223 | "requires": { 1224 | "core-util-is": "~1.0.0", 1225 | "inherits": "~2.0.1", 1226 | "isarray": "0.0.1", 1227 | "string_decoder": "~0.10.x" 1228 | } 1229 | }, 1230 | "string_decoder": { 1231 | "version": "0.10.31", 1232 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 1233 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 1234 | "dev": true 1235 | } 1236 | } 1237 | }, 1238 | "inflight": { 1239 | "version": "1.0.6", 1240 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1241 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1242 | "dev": true, 1243 | "requires": { 1244 | "once": "^1.3.0", 1245 | "wrappy": "1" 1246 | } 1247 | }, 1248 | "inherits": { 1249 | "version": "2.0.3", 1250 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1251 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1252 | }, 1253 | "ini": { 1254 | "version": "1.3.5", 1255 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 1256 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", 1257 | "dev": true 1258 | }, 1259 | "interpret": { 1260 | "version": "1.1.0", 1261 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", 1262 | "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", 1263 | "dev": true 1264 | }, 1265 | "is-absolute": { 1266 | "version": "1.0.0", 1267 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 1268 | "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 1269 | "dev": true, 1270 | "requires": { 1271 | "is-relative": "^1.0.0", 1272 | "is-windows": "^1.0.1" 1273 | } 1274 | }, 1275 | "is-accessor-descriptor": { 1276 | "version": "0.1.6", 1277 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 1278 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 1279 | "dev": true, 1280 | "requires": { 1281 | "kind-of": "^3.0.2" 1282 | }, 1283 | "dependencies": { 1284 | "kind-of": { 1285 | "version": "3.2.2", 1286 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1287 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1288 | "dev": true, 1289 | "requires": { 1290 | "is-buffer": "^1.1.5" 1291 | } 1292 | } 1293 | } 1294 | }, 1295 | "is-buffer": { 1296 | "version": "1.1.6", 1297 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1298 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1299 | "dev": true 1300 | }, 1301 | "is-data-descriptor": { 1302 | "version": "0.1.4", 1303 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 1304 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 1305 | "dev": true, 1306 | "requires": { 1307 | "kind-of": "^3.0.2" 1308 | }, 1309 | "dependencies": { 1310 | "kind-of": { 1311 | "version": "3.2.2", 1312 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1313 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1314 | "dev": true, 1315 | "requires": { 1316 | "is-buffer": "^1.1.5" 1317 | } 1318 | } 1319 | } 1320 | }, 1321 | "is-descriptor": { 1322 | "version": "0.1.6", 1323 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 1324 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 1325 | "dev": true, 1326 | "requires": { 1327 | "is-accessor-descriptor": "^0.1.6", 1328 | "is-data-descriptor": "^0.1.4", 1329 | "kind-of": "^5.0.0" 1330 | }, 1331 | "dependencies": { 1332 | "kind-of": { 1333 | "version": "5.1.0", 1334 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 1335 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 1336 | "dev": true 1337 | } 1338 | } 1339 | }, 1340 | "is-extendable": { 1341 | "version": "1.0.1", 1342 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1343 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1344 | "requires": { 1345 | "is-plain-object": "^2.0.4" 1346 | } 1347 | }, 1348 | "is-extglob": { 1349 | "version": "2.1.1", 1350 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1351 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1352 | "dev": true 1353 | }, 1354 | "is-glob": { 1355 | "version": "3.1.0", 1356 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 1357 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 1358 | "dev": true, 1359 | "requires": { 1360 | "is-extglob": "^2.1.0" 1361 | } 1362 | }, 1363 | "is-number": { 1364 | "version": "3.0.0", 1365 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1366 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1367 | "dev": true, 1368 | "requires": { 1369 | "kind-of": "^3.0.2" 1370 | }, 1371 | "dependencies": { 1372 | "kind-of": { 1373 | "version": "3.2.2", 1374 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1375 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1376 | "dev": true, 1377 | "requires": { 1378 | "is-buffer": "^1.1.5" 1379 | } 1380 | } 1381 | } 1382 | }, 1383 | "is-plain-object": { 1384 | "version": "2.0.4", 1385 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1386 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1387 | "requires": { 1388 | "isobject": "^3.0.1" 1389 | } 1390 | }, 1391 | "is-relative": { 1392 | "version": "1.0.0", 1393 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 1394 | "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 1395 | "dev": true, 1396 | "requires": { 1397 | "is-unc-path": "^1.0.0" 1398 | } 1399 | }, 1400 | "is-unc-path": { 1401 | "version": "1.0.0", 1402 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 1403 | "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 1404 | "dev": true, 1405 | "requires": { 1406 | "unc-path-regex": "^0.1.2" 1407 | } 1408 | }, 1409 | "is-utf8": { 1410 | "version": "0.2.1", 1411 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1412 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1413 | "dev": true 1414 | }, 1415 | "is-windows": { 1416 | "version": "1.0.2", 1417 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 1418 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 1419 | "dev": true 1420 | }, 1421 | "isarray": { 1422 | "version": "1.0.0", 1423 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1424 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1425 | }, 1426 | "isexe": { 1427 | "version": "2.0.0", 1428 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1429 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 1430 | }, 1431 | "isobject": { 1432 | "version": "3.0.1", 1433 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1434 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" 1435 | }, 1436 | "jshint": { 1437 | "version": "2.9.5", 1438 | "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz", 1439 | "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=", 1440 | "dev": true, 1441 | "requires": { 1442 | "cli": "~1.0.0", 1443 | "console-browserify": "1.1.x", 1444 | "exit": "0.1.x", 1445 | "htmlparser2": "3.8.x", 1446 | "lodash": "3.7.x", 1447 | "minimatch": "~3.0.2", 1448 | "shelljs": "0.3.x", 1449 | "strip-json-comments": "1.0.x" 1450 | }, 1451 | "dependencies": { 1452 | "lodash": { 1453 | "version": "3.7.0", 1454 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz", 1455 | "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=", 1456 | "dev": true 1457 | }, 1458 | "minimatch": { 1459 | "version": "3.0.4", 1460 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1461 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1462 | "dev": true, 1463 | "requires": { 1464 | "brace-expansion": "^1.1.7" 1465 | } 1466 | } 1467 | } 1468 | }, 1469 | "kind-of": { 1470 | "version": "6.0.2", 1471 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 1472 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 1473 | "dev": true 1474 | }, 1475 | "liftoff": { 1476 | "version": "2.5.0", 1477 | "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", 1478 | "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", 1479 | "dev": true, 1480 | "requires": { 1481 | "extend": "^3.0.0", 1482 | "findup-sync": "^2.0.0", 1483 | "fined": "^1.0.1", 1484 | "flagged-respawn": "^1.0.0", 1485 | "is-plain-object": "^2.0.4", 1486 | "object.map": "^1.0.0", 1487 | "rechoir": "^0.6.2", 1488 | "resolve": "^1.1.7" 1489 | } 1490 | }, 1491 | "lodash": { 1492 | "version": "1.0.2", 1493 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", 1494 | "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", 1495 | "dev": true 1496 | }, 1497 | "lodash._basecopy": { 1498 | "version": "3.0.1", 1499 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 1500 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", 1501 | "dev": true 1502 | }, 1503 | "lodash._basetostring": { 1504 | "version": "3.0.1", 1505 | "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", 1506 | "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", 1507 | "dev": true 1508 | }, 1509 | "lodash._basevalues": { 1510 | "version": "3.0.0", 1511 | "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", 1512 | "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", 1513 | "dev": true 1514 | }, 1515 | "lodash._getnative": { 1516 | "version": "3.9.1", 1517 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 1518 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", 1519 | "dev": true 1520 | }, 1521 | "lodash._isiterateecall": { 1522 | "version": "3.0.9", 1523 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 1524 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", 1525 | "dev": true 1526 | }, 1527 | "lodash._reescape": { 1528 | "version": "3.0.0", 1529 | "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", 1530 | "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", 1531 | "dev": true 1532 | }, 1533 | "lodash._reevaluate": { 1534 | "version": "3.0.0", 1535 | "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", 1536 | "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", 1537 | "dev": true 1538 | }, 1539 | "lodash._reinterpolate": { 1540 | "version": "3.0.0", 1541 | "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 1542 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", 1543 | "dev": true 1544 | }, 1545 | "lodash._root": { 1546 | "version": "3.0.1", 1547 | "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", 1548 | "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", 1549 | "dev": true 1550 | }, 1551 | "lodash.escape": { 1552 | "version": "3.2.0", 1553 | "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", 1554 | "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", 1555 | "dev": true, 1556 | "requires": { 1557 | "lodash._root": "^3.0.0" 1558 | } 1559 | }, 1560 | "lodash.find": { 1561 | "version": "4.6.0", 1562 | "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", 1563 | "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" 1564 | }, 1565 | "lodash.isarguments": { 1566 | "version": "3.1.0", 1567 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 1568 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", 1569 | "dev": true 1570 | }, 1571 | "lodash.isarray": { 1572 | "version": "3.0.4", 1573 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 1574 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 1575 | "dev": true 1576 | }, 1577 | "lodash.keys": { 1578 | "version": "3.1.2", 1579 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 1580 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", 1581 | "dev": true, 1582 | "requires": { 1583 | "lodash._getnative": "^3.0.0", 1584 | "lodash.isarguments": "^3.0.0", 1585 | "lodash.isarray": "^3.0.0" 1586 | } 1587 | }, 1588 | "lodash.restparam": { 1589 | "version": "3.6.1", 1590 | "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", 1591 | "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", 1592 | "dev": true 1593 | }, 1594 | "lodash.template": { 1595 | "version": "3.6.2", 1596 | "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", 1597 | "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", 1598 | "dev": true, 1599 | "requires": { 1600 | "lodash._basecopy": "^3.0.0", 1601 | "lodash._basetostring": "^3.0.0", 1602 | "lodash._basevalues": "^3.0.0", 1603 | "lodash._isiterateecall": "^3.0.0", 1604 | "lodash._reinterpolate": "^3.0.0", 1605 | "lodash.escape": "^3.0.0", 1606 | "lodash.keys": "^3.0.0", 1607 | "lodash.restparam": "^3.0.0", 1608 | "lodash.templatesettings": "^3.0.0" 1609 | } 1610 | }, 1611 | "lodash.templatesettings": { 1612 | "version": "3.1.1", 1613 | "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", 1614 | "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", 1615 | "dev": true, 1616 | "requires": { 1617 | "lodash._reinterpolate": "^3.0.0", 1618 | "lodash.escape": "^3.0.0" 1619 | } 1620 | }, 1621 | "lru-cache": { 1622 | "version": "2.7.3", 1623 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 1624 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", 1625 | "dev": true 1626 | }, 1627 | "make-iterator": { 1628 | "version": "1.0.1", 1629 | "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", 1630 | "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", 1631 | "dev": true, 1632 | "requires": { 1633 | "kind-of": "^6.0.2" 1634 | } 1635 | }, 1636 | "map-cache": { 1637 | "version": "0.2.2", 1638 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 1639 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 1640 | "dev": true 1641 | }, 1642 | "map-visit": { 1643 | "version": "1.0.0", 1644 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 1645 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 1646 | "dev": true, 1647 | "requires": { 1648 | "object-visit": "^1.0.0" 1649 | } 1650 | }, 1651 | "micromatch": { 1652 | "version": "3.1.10", 1653 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 1654 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 1655 | "dev": true, 1656 | "requires": { 1657 | "arr-diff": "^4.0.0", 1658 | "array-unique": "^0.3.2", 1659 | "braces": "^2.3.1", 1660 | "define-property": "^2.0.2", 1661 | "extend-shallow": "^3.0.2", 1662 | "extglob": "^2.0.4", 1663 | "fragment-cache": "^0.2.1", 1664 | "kind-of": "^6.0.2", 1665 | "nanomatch": "^1.2.9", 1666 | "object.pick": "^1.3.0", 1667 | "regex-not": "^1.0.0", 1668 | "snapdragon": "^0.8.1", 1669 | "to-regex": "^3.0.2" 1670 | } 1671 | }, 1672 | "minimatch": { 1673 | "version": "2.0.10", 1674 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 1675 | "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", 1676 | "dev": true, 1677 | "requires": { 1678 | "brace-expansion": "^1.0.0" 1679 | } 1680 | }, 1681 | "minimist": { 1682 | "version": "1.2.0", 1683 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 1684 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1685 | "dev": true 1686 | }, 1687 | "mixin-deep": { 1688 | "version": "1.3.1", 1689 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", 1690 | "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", 1691 | "dev": true, 1692 | "requires": { 1693 | "for-in": "^1.0.2", 1694 | "is-extendable": "^1.0.1" 1695 | } 1696 | }, 1697 | "mkdirp": { 1698 | "version": "0.5.1", 1699 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1700 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1701 | "dev": true, 1702 | "requires": { 1703 | "minimist": "0.0.8" 1704 | }, 1705 | "dependencies": { 1706 | "minimist": { 1707 | "version": "0.0.8", 1708 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1709 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1710 | "dev": true 1711 | } 1712 | } 1713 | }, 1714 | "mocha": { 1715 | "version": "5.2.0", 1716 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", 1717 | "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", 1718 | "dev": true, 1719 | "requires": { 1720 | "browser-stdout": "1.3.1", 1721 | "commander": "2.15.1", 1722 | "debug": "3.1.0", 1723 | "diff": "3.5.0", 1724 | "escape-string-regexp": "1.0.5", 1725 | "glob": "7.1.2", 1726 | "growl": "1.10.5", 1727 | "he": "1.1.1", 1728 | "minimatch": "3.0.4", 1729 | "mkdirp": "0.5.1", 1730 | "supports-color": "5.4.0" 1731 | }, 1732 | "dependencies": { 1733 | "debug": { 1734 | "version": "3.1.0", 1735 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1736 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1737 | "dev": true, 1738 | "requires": { 1739 | "ms": "2.0.0" 1740 | } 1741 | }, 1742 | "glob": { 1743 | "version": "7.1.2", 1744 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1745 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 1746 | "dev": true, 1747 | "requires": { 1748 | "fs.realpath": "^1.0.0", 1749 | "inflight": "^1.0.4", 1750 | "inherits": "2", 1751 | "minimatch": "^3.0.4", 1752 | "once": "^1.3.0", 1753 | "path-is-absolute": "^1.0.0" 1754 | } 1755 | }, 1756 | "minimatch": { 1757 | "version": "3.0.4", 1758 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1759 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1760 | "dev": true, 1761 | "requires": { 1762 | "brace-expansion": "^1.1.7" 1763 | } 1764 | }, 1765 | "supports-color": { 1766 | "version": "5.4.0", 1767 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 1768 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 1769 | "dev": true, 1770 | "requires": { 1771 | "has-flag": "^3.0.0" 1772 | } 1773 | } 1774 | } 1775 | }, 1776 | "ms": { 1777 | "version": "2.0.0", 1778 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1779 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1780 | "dev": true 1781 | }, 1782 | "multipipe": { 1783 | "version": "0.1.2", 1784 | "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", 1785 | "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", 1786 | "dev": true, 1787 | "requires": { 1788 | "duplexer2": "0.0.2" 1789 | } 1790 | }, 1791 | "nanomatch": { 1792 | "version": "1.2.13", 1793 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 1794 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 1795 | "dev": true, 1796 | "requires": { 1797 | "arr-diff": "^4.0.0", 1798 | "array-unique": "^0.3.2", 1799 | "define-property": "^2.0.2", 1800 | "extend-shallow": "^3.0.2", 1801 | "fragment-cache": "^0.2.1", 1802 | "is-windows": "^1.0.2", 1803 | "kind-of": "^6.0.2", 1804 | "object.pick": "^1.3.0", 1805 | "regex-not": "^1.0.0", 1806 | "snapdragon": "^0.8.1", 1807 | "to-regex": "^3.0.1" 1808 | } 1809 | }, 1810 | "natives": { 1811 | "version": "1.1.4", 1812 | "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.4.tgz", 1813 | "integrity": "sha512-Q29yeg9aFKwhLVdkTAejM/HvYG0Y1Am1+HUkFQGn5k2j8GS+v60TVmZh6nujpEAj/qql+wGUrlryO8bF+b1jEg==", 1814 | "dev": true 1815 | }, 1816 | "object-assign": { 1817 | "version": "3.0.0", 1818 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", 1819 | "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", 1820 | "dev": true 1821 | }, 1822 | "object-copy": { 1823 | "version": "0.1.0", 1824 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 1825 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 1826 | "dev": true, 1827 | "requires": { 1828 | "copy-descriptor": "^0.1.0", 1829 | "define-property": "^0.2.5", 1830 | "kind-of": "^3.0.3" 1831 | }, 1832 | "dependencies": { 1833 | "define-property": { 1834 | "version": "0.2.5", 1835 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1836 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1837 | "dev": true, 1838 | "requires": { 1839 | "is-descriptor": "^0.1.0" 1840 | } 1841 | }, 1842 | "kind-of": { 1843 | "version": "3.2.2", 1844 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1845 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1846 | "dev": true, 1847 | "requires": { 1848 | "is-buffer": "^1.1.5" 1849 | } 1850 | } 1851 | } 1852 | }, 1853 | "object-visit": { 1854 | "version": "1.0.1", 1855 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 1856 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 1857 | "dev": true, 1858 | "requires": { 1859 | "isobject": "^3.0.0" 1860 | } 1861 | }, 1862 | "object.defaults": { 1863 | "version": "1.1.0", 1864 | "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 1865 | "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", 1866 | "dev": true, 1867 | "requires": { 1868 | "array-each": "^1.0.1", 1869 | "array-slice": "^1.0.0", 1870 | "for-own": "^1.0.0", 1871 | "isobject": "^3.0.0" 1872 | } 1873 | }, 1874 | "object.map": { 1875 | "version": "1.0.1", 1876 | "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", 1877 | "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", 1878 | "dev": true, 1879 | "requires": { 1880 | "for-own": "^1.0.0", 1881 | "make-iterator": "^1.0.0" 1882 | } 1883 | }, 1884 | "object.pick": { 1885 | "version": "1.3.0", 1886 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 1887 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 1888 | "dev": true, 1889 | "requires": { 1890 | "isobject": "^3.0.1" 1891 | } 1892 | }, 1893 | "once": { 1894 | "version": "1.3.3", 1895 | "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 1896 | "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", 1897 | "dev": true, 1898 | "requires": { 1899 | "wrappy": "1" 1900 | } 1901 | }, 1902 | "orchestrator": { 1903 | "version": "0.3.8", 1904 | "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", 1905 | "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", 1906 | "dev": true, 1907 | "requires": { 1908 | "end-of-stream": "~0.1.5", 1909 | "sequencify": "~0.0.7", 1910 | "stream-consume": "~0.1.0" 1911 | } 1912 | }, 1913 | "ordered-read-streams": { 1914 | "version": "0.1.0", 1915 | "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", 1916 | "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", 1917 | "dev": true 1918 | }, 1919 | "os-homedir": { 1920 | "version": "1.0.2", 1921 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1922 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 1923 | "dev": true 1924 | }, 1925 | "parse-filepath": { 1926 | "version": "1.0.2", 1927 | "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", 1928 | "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", 1929 | "dev": true, 1930 | "requires": { 1931 | "is-absolute": "^1.0.0", 1932 | "map-cache": "^0.2.0", 1933 | "path-root": "^0.1.1" 1934 | } 1935 | }, 1936 | "parse-passwd": { 1937 | "version": "1.0.0", 1938 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 1939 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", 1940 | "dev": true 1941 | }, 1942 | "pascalcase": { 1943 | "version": "0.1.1", 1944 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 1945 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 1946 | "dev": true 1947 | }, 1948 | "path-is-absolute": { 1949 | "version": "1.0.1", 1950 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1951 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1952 | "dev": true 1953 | }, 1954 | "path-parse": { 1955 | "version": "1.0.5", 1956 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 1957 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 1958 | "dev": true 1959 | }, 1960 | "path-root": { 1961 | "version": "0.1.1", 1962 | "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", 1963 | "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", 1964 | "dev": true, 1965 | "requires": { 1966 | "path-root-regex": "^0.1.0" 1967 | } 1968 | }, 1969 | "path-root-regex": { 1970 | "version": "0.1.2", 1971 | "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", 1972 | "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", 1973 | "dev": true 1974 | }, 1975 | "plugin-error": { 1976 | "version": "1.0.1", 1977 | "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", 1978 | "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", 1979 | "requires": { 1980 | "ansi-colors": "^1.0.1", 1981 | "arr-diff": "^4.0.0", 1982 | "arr-union": "^3.1.0", 1983 | "extend-shallow": "^3.0.2" 1984 | } 1985 | }, 1986 | "posix-character-classes": { 1987 | "version": "0.1.1", 1988 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 1989 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 1990 | "dev": true 1991 | }, 1992 | "pretty-hrtime": { 1993 | "version": "1.0.3", 1994 | "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", 1995 | "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", 1996 | "dev": true 1997 | }, 1998 | "process-nextick-args": { 1999 | "version": "2.0.0", 2000 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 2001 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" 2002 | }, 2003 | "readable-stream": { 2004 | "version": "2.3.6", 2005 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 2006 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 2007 | "requires": { 2008 | "core-util-is": "~1.0.0", 2009 | "inherits": "~2.0.3", 2010 | "isarray": "~1.0.0", 2011 | "process-nextick-args": "~2.0.0", 2012 | "safe-buffer": "~5.1.1", 2013 | "string_decoder": "~1.1.1", 2014 | "util-deprecate": "~1.0.1" 2015 | } 2016 | }, 2017 | "rechoir": { 2018 | "version": "0.6.2", 2019 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 2020 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 2021 | "dev": true, 2022 | "requires": { 2023 | "resolve": "^1.1.6" 2024 | } 2025 | }, 2026 | "regex-not": { 2027 | "version": "1.0.2", 2028 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 2029 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 2030 | "dev": true, 2031 | "requires": { 2032 | "extend-shallow": "^3.0.2", 2033 | "safe-regex": "^1.1.0" 2034 | } 2035 | }, 2036 | "remove-trailing-separator": { 2037 | "version": "1.1.0", 2038 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2039 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" 2040 | }, 2041 | "repeat-element": { 2042 | "version": "1.1.2", 2043 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 2044 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 2045 | "dev": true 2046 | }, 2047 | "repeat-string": { 2048 | "version": "1.6.1", 2049 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2050 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2051 | "dev": true 2052 | }, 2053 | "replace-ext": { 2054 | "version": "1.0.0", 2055 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", 2056 | "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" 2057 | }, 2058 | "resolve": { 2059 | "version": "1.8.1", 2060 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", 2061 | "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", 2062 | "dev": true, 2063 | "requires": { 2064 | "path-parse": "^1.0.5" 2065 | } 2066 | }, 2067 | "resolve-dir": { 2068 | "version": "1.0.1", 2069 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", 2070 | "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", 2071 | "dev": true, 2072 | "requires": { 2073 | "expand-tilde": "^2.0.0", 2074 | "global-modules": "^1.0.0" 2075 | } 2076 | }, 2077 | "resolve-url": { 2078 | "version": "0.2.1", 2079 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 2080 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 2081 | "dev": true 2082 | }, 2083 | "ret": { 2084 | "version": "0.1.15", 2085 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 2086 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 2087 | "dev": true 2088 | }, 2089 | "safe-buffer": { 2090 | "version": "5.1.2", 2091 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2092 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2093 | }, 2094 | "safe-regex": { 2095 | "version": "1.1.0", 2096 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 2097 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 2098 | "dev": true, 2099 | "requires": { 2100 | "ret": "~0.1.10" 2101 | } 2102 | }, 2103 | "semver": { 2104 | "version": "4.3.6", 2105 | "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", 2106 | "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", 2107 | "dev": true 2108 | }, 2109 | "sequencify": { 2110 | "version": "0.0.7", 2111 | "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", 2112 | "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", 2113 | "dev": true 2114 | }, 2115 | "set-value": { 2116 | "version": "2.0.0", 2117 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", 2118 | "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", 2119 | "dev": true, 2120 | "requires": { 2121 | "extend-shallow": "^2.0.1", 2122 | "is-extendable": "^0.1.1", 2123 | "is-plain-object": "^2.0.3", 2124 | "split-string": "^3.0.1" 2125 | }, 2126 | "dependencies": { 2127 | "extend-shallow": { 2128 | "version": "2.0.1", 2129 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2130 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2131 | "dev": true, 2132 | "requires": { 2133 | "is-extendable": "^0.1.0" 2134 | } 2135 | }, 2136 | "is-extendable": { 2137 | "version": "0.1.1", 2138 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 2139 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2140 | "dev": true 2141 | } 2142 | } 2143 | }, 2144 | "shelljs": { 2145 | "version": "0.3.0", 2146 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", 2147 | "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", 2148 | "dev": true 2149 | }, 2150 | "should": { 2151 | "version": "13.2.1", 2152 | "resolved": "https://registry.npmjs.org/should/-/should-13.2.1.tgz", 2153 | "integrity": "sha512-l+/NwEMO+DcstsHEwPHRHzC9j4UOE3VQwJGcMWSsD/vqpqHbnQ+1iSHy64Ihmmjx1uiRPD9pFadTSc3MJtXAgw==", 2154 | "dev": true, 2155 | "requires": { 2156 | "should-equal": "^2.0.0", 2157 | "should-format": "^3.0.3", 2158 | "should-type": "^1.4.0", 2159 | "should-type-adaptors": "^1.0.1", 2160 | "should-util": "^1.0.0" 2161 | } 2162 | }, 2163 | "should-equal": { 2164 | "version": "2.0.0", 2165 | "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", 2166 | "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", 2167 | "dev": true, 2168 | "requires": { 2169 | "should-type": "^1.4.0" 2170 | } 2171 | }, 2172 | "should-format": { 2173 | "version": "3.0.3", 2174 | "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", 2175 | "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", 2176 | "dev": true, 2177 | "requires": { 2178 | "should-type": "^1.3.0", 2179 | "should-type-adaptors": "^1.0.1" 2180 | } 2181 | }, 2182 | "should-type": { 2183 | "version": "1.4.0", 2184 | "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", 2185 | "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=", 2186 | "dev": true 2187 | }, 2188 | "should-type-adaptors": { 2189 | "version": "1.1.0", 2190 | "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", 2191 | "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", 2192 | "dev": true, 2193 | "requires": { 2194 | "should-type": "^1.3.0", 2195 | "should-util": "^1.0.0" 2196 | } 2197 | }, 2198 | "should-util": { 2199 | "version": "1.0.0", 2200 | "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.0.tgz", 2201 | "integrity": "sha1-yYzaN0qmsZDfi6h8mInCtNtiAGM=", 2202 | "dev": true 2203 | }, 2204 | "sigmund": { 2205 | "version": "1.0.1", 2206 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 2207 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", 2208 | "dev": true 2209 | }, 2210 | "snapdragon": { 2211 | "version": "0.8.2", 2212 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 2213 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 2214 | "dev": true, 2215 | "requires": { 2216 | "base": "^0.11.1", 2217 | "debug": "^2.2.0", 2218 | "define-property": "^0.2.5", 2219 | "extend-shallow": "^2.0.1", 2220 | "map-cache": "^0.2.2", 2221 | "source-map": "^0.5.6", 2222 | "source-map-resolve": "^0.5.0", 2223 | "use": "^3.1.0" 2224 | }, 2225 | "dependencies": { 2226 | "define-property": { 2227 | "version": "0.2.5", 2228 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2229 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2230 | "dev": true, 2231 | "requires": { 2232 | "is-descriptor": "^0.1.0" 2233 | } 2234 | }, 2235 | "extend-shallow": { 2236 | "version": "2.0.1", 2237 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2238 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2239 | "dev": true, 2240 | "requires": { 2241 | "is-extendable": "^0.1.0" 2242 | } 2243 | }, 2244 | "is-extendable": { 2245 | "version": "0.1.1", 2246 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 2247 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2248 | "dev": true 2249 | } 2250 | } 2251 | }, 2252 | "snapdragon-node": { 2253 | "version": "2.1.1", 2254 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 2255 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 2256 | "dev": true, 2257 | "requires": { 2258 | "define-property": "^1.0.0", 2259 | "isobject": "^3.0.0", 2260 | "snapdragon-util": "^3.0.1" 2261 | }, 2262 | "dependencies": { 2263 | "define-property": { 2264 | "version": "1.0.0", 2265 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 2266 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 2267 | "dev": true, 2268 | "requires": { 2269 | "is-descriptor": "^1.0.0" 2270 | } 2271 | }, 2272 | "is-accessor-descriptor": { 2273 | "version": "1.0.0", 2274 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 2275 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 2276 | "dev": true, 2277 | "requires": { 2278 | "kind-of": "^6.0.0" 2279 | } 2280 | }, 2281 | "is-data-descriptor": { 2282 | "version": "1.0.0", 2283 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 2284 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 2285 | "dev": true, 2286 | "requires": { 2287 | "kind-of": "^6.0.0" 2288 | } 2289 | }, 2290 | "is-descriptor": { 2291 | "version": "1.0.2", 2292 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 2293 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 2294 | "dev": true, 2295 | "requires": { 2296 | "is-accessor-descriptor": "^1.0.0", 2297 | "is-data-descriptor": "^1.0.0", 2298 | "kind-of": "^6.0.2" 2299 | } 2300 | } 2301 | } 2302 | }, 2303 | "snapdragon-util": { 2304 | "version": "3.0.1", 2305 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 2306 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 2307 | "dev": true, 2308 | "requires": { 2309 | "kind-of": "^3.2.0" 2310 | }, 2311 | "dependencies": { 2312 | "kind-of": { 2313 | "version": "3.2.2", 2314 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2315 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2316 | "dev": true, 2317 | "requires": { 2318 | "is-buffer": "^1.1.5" 2319 | } 2320 | } 2321 | } 2322 | }, 2323 | "source-map": { 2324 | "version": "0.5.7", 2325 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2326 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2327 | "dev": true 2328 | }, 2329 | "source-map-resolve": { 2330 | "version": "0.5.2", 2331 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", 2332 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", 2333 | "dev": true, 2334 | "requires": { 2335 | "atob": "^2.1.1", 2336 | "decode-uri-component": "^0.2.0", 2337 | "resolve-url": "^0.2.1", 2338 | "source-map-url": "^0.4.0", 2339 | "urix": "^0.1.0" 2340 | } 2341 | }, 2342 | "source-map-url": { 2343 | "version": "0.4.0", 2344 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 2345 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 2346 | "dev": true 2347 | }, 2348 | "sparkles": { 2349 | "version": "1.0.1", 2350 | "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", 2351 | "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", 2352 | "dev": true 2353 | }, 2354 | "split-string": { 2355 | "version": "3.1.0", 2356 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 2357 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 2358 | "dev": true, 2359 | "requires": { 2360 | "extend-shallow": "^3.0.0" 2361 | } 2362 | }, 2363 | "static-extend": { 2364 | "version": "0.1.2", 2365 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 2366 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 2367 | "dev": true, 2368 | "requires": { 2369 | "define-property": "^0.2.5", 2370 | "object-copy": "^0.1.0" 2371 | }, 2372 | "dependencies": { 2373 | "define-property": { 2374 | "version": "0.2.5", 2375 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2376 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2377 | "dev": true, 2378 | "requires": { 2379 | "is-descriptor": "^0.1.0" 2380 | } 2381 | } 2382 | } 2383 | }, 2384 | "stream-consume": { 2385 | "version": "0.1.1", 2386 | "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", 2387 | "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==", 2388 | "dev": true 2389 | }, 2390 | "string_decoder": { 2391 | "version": "1.1.1", 2392 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2393 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2394 | "requires": { 2395 | "safe-buffer": "~5.1.0" 2396 | } 2397 | }, 2398 | "strip-ansi": { 2399 | "version": "3.0.1", 2400 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2401 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2402 | "dev": true, 2403 | "requires": { 2404 | "ansi-regex": "^2.0.0" 2405 | } 2406 | }, 2407 | "strip-bom": { 2408 | "version": "1.0.0", 2409 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", 2410 | "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", 2411 | "dev": true, 2412 | "requires": { 2413 | "first-chunk-stream": "^1.0.0", 2414 | "is-utf8": "^0.2.0" 2415 | } 2416 | }, 2417 | "strip-json-comments": { 2418 | "version": "1.0.4", 2419 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", 2420 | "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", 2421 | "dev": true 2422 | }, 2423 | "supports-color": { 2424 | "version": "2.0.0", 2425 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2426 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 2427 | "dev": true 2428 | }, 2429 | "through2": { 2430 | "version": "2.0.3", 2431 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 2432 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 2433 | "requires": { 2434 | "readable-stream": "^2.1.5", 2435 | "xtend": "~4.0.1" 2436 | } 2437 | }, 2438 | "tildify": { 2439 | "version": "1.2.0", 2440 | "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", 2441 | "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", 2442 | "dev": true, 2443 | "requires": { 2444 | "os-homedir": "^1.0.0" 2445 | } 2446 | }, 2447 | "time-stamp": { 2448 | "version": "1.1.0", 2449 | "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", 2450 | "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", 2451 | "dev": true 2452 | }, 2453 | "to-object-path": { 2454 | "version": "0.3.0", 2455 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 2456 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 2457 | "dev": true, 2458 | "requires": { 2459 | "kind-of": "^3.0.2" 2460 | }, 2461 | "dependencies": { 2462 | "kind-of": { 2463 | "version": "3.2.2", 2464 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2465 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2466 | "dev": true, 2467 | "requires": { 2468 | "is-buffer": "^1.1.5" 2469 | } 2470 | } 2471 | } 2472 | }, 2473 | "to-regex": { 2474 | "version": "3.0.2", 2475 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 2476 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 2477 | "dev": true, 2478 | "requires": { 2479 | "define-property": "^2.0.2", 2480 | "extend-shallow": "^3.0.2", 2481 | "regex-not": "^1.0.2", 2482 | "safe-regex": "^1.1.0" 2483 | } 2484 | }, 2485 | "to-regex-range": { 2486 | "version": "2.1.1", 2487 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 2488 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 2489 | "dev": true, 2490 | "requires": { 2491 | "is-number": "^3.0.0", 2492 | "repeat-string": "^1.6.1" 2493 | } 2494 | }, 2495 | "unc-path-regex": { 2496 | "version": "0.1.2", 2497 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 2498 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 2499 | "dev": true 2500 | }, 2501 | "union-value": { 2502 | "version": "1.0.0", 2503 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", 2504 | "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", 2505 | "dev": true, 2506 | "requires": { 2507 | "arr-union": "^3.1.0", 2508 | "get-value": "^2.0.6", 2509 | "is-extendable": "^0.1.1", 2510 | "set-value": "^0.4.3" 2511 | }, 2512 | "dependencies": { 2513 | "extend-shallow": { 2514 | "version": "2.0.1", 2515 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2516 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2517 | "dev": true, 2518 | "requires": { 2519 | "is-extendable": "^0.1.0" 2520 | } 2521 | }, 2522 | "is-extendable": { 2523 | "version": "0.1.1", 2524 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 2525 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2526 | "dev": true 2527 | }, 2528 | "set-value": { 2529 | "version": "0.4.3", 2530 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", 2531 | "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", 2532 | "dev": true, 2533 | "requires": { 2534 | "extend-shallow": "^2.0.1", 2535 | "is-extendable": "^0.1.1", 2536 | "is-plain-object": "^2.0.1", 2537 | "to-object-path": "^0.3.0" 2538 | } 2539 | } 2540 | } 2541 | }, 2542 | "unique-stream": { 2543 | "version": "1.0.0", 2544 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", 2545 | "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", 2546 | "dev": true 2547 | }, 2548 | "unset-value": { 2549 | "version": "1.0.0", 2550 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 2551 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 2552 | "dev": true, 2553 | "requires": { 2554 | "has-value": "^0.3.1", 2555 | "isobject": "^3.0.0" 2556 | }, 2557 | "dependencies": { 2558 | "has-value": { 2559 | "version": "0.3.1", 2560 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 2561 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 2562 | "dev": true, 2563 | "requires": { 2564 | "get-value": "^2.0.3", 2565 | "has-values": "^0.1.4", 2566 | "isobject": "^2.0.0" 2567 | }, 2568 | "dependencies": { 2569 | "isobject": { 2570 | "version": "2.1.0", 2571 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 2572 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 2573 | "dev": true, 2574 | "requires": { 2575 | "isarray": "1.0.0" 2576 | } 2577 | } 2578 | } 2579 | }, 2580 | "has-values": { 2581 | "version": "0.1.4", 2582 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 2583 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 2584 | "dev": true 2585 | } 2586 | } 2587 | }, 2588 | "urix": { 2589 | "version": "0.1.0", 2590 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 2591 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 2592 | "dev": true 2593 | }, 2594 | "use": { 2595 | "version": "3.1.0", 2596 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", 2597 | "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", 2598 | "dev": true, 2599 | "requires": { 2600 | "kind-of": "^6.0.2" 2601 | } 2602 | }, 2603 | "user-home": { 2604 | "version": "1.1.1", 2605 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", 2606 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", 2607 | "dev": true 2608 | }, 2609 | "util-deprecate": { 2610 | "version": "1.0.2", 2611 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2612 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2613 | }, 2614 | "v8flags": { 2615 | "version": "2.1.1", 2616 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", 2617 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", 2618 | "dev": true, 2619 | "requires": { 2620 | "user-home": "^1.1.1" 2621 | } 2622 | }, 2623 | "vinyl": { 2624 | "version": "2.2.0", 2625 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", 2626 | "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", 2627 | "requires": { 2628 | "clone": "^2.1.1", 2629 | "clone-buffer": "^1.0.0", 2630 | "clone-stats": "^1.0.0", 2631 | "cloneable-readable": "^1.0.0", 2632 | "remove-trailing-separator": "^1.0.1", 2633 | "replace-ext": "^1.0.0" 2634 | } 2635 | }, 2636 | "vinyl-fs": { 2637 | "version": "0.3.14", 2638 | "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", 2639 | "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", 2640 | "dev": true, 2641 | "requires": { 2642 | "defaults": "^1.0.0", 2643 | "glob-stream": "^3.1.5", 2644 | "glob-watcher": "^0.0.6", 2645 | "graceful-fs": "^3.0.0", 2646 | "mkdirp": "^0.5.0", 2647 | "strip-bom": "^1.0.0", 2648 | "through2": "^0.6.1", 2649 | "vinyl": "^0.4.0" 2650 | }, 2651 | "dependencies": { 2652 | "clone": { 2653 | "version": "0.2.0", 2654 | "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", 2655 | "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", 2656 | "dev": true 2657 | }, 2658 | "clone-stats": { 2659 | "version": "0.0.1", 2660 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", 2661 | "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", 2662 | "dev": true 2663 | }, 2664 | "isarray": { 2665 | "version": "0.0.1", 2666 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 2667 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 2668 | "dev": true 2669 | }, 2670 | "readable-stream": { 2671 | "version": "1.0.34", 2672 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 2673 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 2674 | "dev": true, 2675 | "requires": { 2676 | "core-util-is": "~1.0.0", 2677 | "inherits": "~2.0.1", 2678 | "isarray": "0.0.1", 2679 | "string_decoder": "~0.10.x" 2680 | } 2681 | }, 2682 | "string_decoder": { 2683 | "version": "0.10.31", 2684 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2685 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 2686 | "dev": true 2687 | }, 2688 | "through2": { 2689 | "version": "0.6.5", 2690 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 2691 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 2692 | "dev": true, 2693 | "requires": { 2694 | "readable-stream": ">=1.0.33-1 <1.1.0-0", 2695 | "xtend": ">=4.0.0 <4.1.0-0" 2696 | } 2697 | }, 2698 | "vinyl": { 2699 | "version": "0.4.6", 2700 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", 2701 | "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", 2702 | "dev": true, 2703 | "requires": { 2704 | "clone": "^0.2.0", 2705 | "clone-stats": "^0.0.1" 2706 | } 2707 | } 2708 | } 2709 | }, 2710 | "which": { 2711 | "version": "1.3.1", 2712 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2713 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2714 | "requires": { 2715 | "isexe": "^2.0.0" 2716 | } 2717 | }, 2718 | "wrappy": { 2719 | "version": "1.0.2", 2720 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2721 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2722 | "dev": true 2723 | }, 2724 | "xtend": { 2725 | "version": "4.0.1", 2726 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 2727 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 2728 | } 2729 | } 2730 | } 2731 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gulp-gitmodified", 3 | "version": "1.2.0", 4 | "description": "A plugin for Gulp to get an object stream of modified files on git.", 5 | "keywords": [ 6 | "gulpplugin", 7 | "git", 8 | "git modified" 9 | ], 10 | "homepage": "https://github.com/mikaelbr/gulp-gitmodified", 11 | "bugs": "https://github.com/mikaelbr/gulp-gitmodified/issues", 12 | "author": { 13 | "name": "Mikael Brevik", 14 | "email": "mikaelbre@gmail.com", 15 | "url": "https://github.com/mikaelbr" 16 | }, 17 | "main": "./index.js", 18 | "repository": { 19 | "type": "git", 20 | "url": "git://github.com/mikaelbr/gulp-gitmodified.git" 21 | }, 22 | "scripts": { 23 | "test": "mocha -R spec", 24 | "example": "gulp --gulpfile examples/gulpfile.js foo", 25 | "lint": "jshint **/*.js" 26 | }, 27 | "dependencies": { 28 | "lodash.find": "^4.6.0", 29 | "plugin-error": "^1.0.1", 30 | "through2": "^2.0.0", 31 | "vinyl": "^2.2.0", 32 | "which": "~1.3.1" 33 | }, 34 | "devDependencies": { 35 | "gulp": "~3.9.1", 36 | "jshint": "~2.9.5", 37 | "mocha": "*", 38 | "should": "~13.2.1" 39 | }, 40 | "engines": { 41 | "node": ">=8.11.0", 42 | "npm": ">=5.6.0" 43 | }, 44 | "license": "MIT" 45 | } 46 | -------------------------------------------------------------------------------- /test/fixtures/a.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikaelbr/gulp-gitmodified/0202173640115457391d00e2c0c3c65c5f67c5d2/test/fixtures/a.txt -------------------------------------------------------------------------------- /test/fixtures/b.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikaelbr/gulp-gitmodified/0202173640115457391d00e2c0c3c65c5f67c5d2/test/fixtures/b.txt -------------------------------------------------------------------------------- /test/fixtures/c.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikaelbr/gulp-gitmodified/0202173640115457391d00e2c0c3c65c5f67c5d2/test/fixtures/c.txt -------------------------------------------------------------------------------- /test/git.js: -------------------------------------------------------------------------------- 1 | /*global describe, it*/ 2 | 'use strict'; 3 | 4 | var should = require('should'), 5 | git = require('../lib/git'); 6 | 7 | require('mocha'); 8 | 9 | describe('gulp-gitmodified', function () { 10 | 11 | it('should have mockable which and exec', function (done) { 12 | var fnCalls = 0; 13 | git.which = function (app, cb) { 14 | ++fnCalls; 15 | app.should.equal('git'); 16 | cb(); 17 | }; 18 | git.exec = function (app, args, extra, cb) { 19 | ++fnCalls; 20 | app.should.equal('git'); 21 | cb(null, ''); 22 | }; 23 | git.getStatusByMatcher(new RegExp('^(M)\\s', 'i'), function (err) { 24 | should(err).equal(null); 25 | fnCalls.should.equal(2); 26 | done(); 27 | }); 28 | }); 29 | 30 | 31 | it('should give error if git is not found on the system', function (done) { 32 | git.which = function (app, cb) { 33 | cb(new Error()); 34 | }; 35 | git.exec = function (app, args, extra, cb) { 36 | cb(null, ''); 37 | }; 38 | git.getStatusByMatcher(new RegExp('^(M)\\s', 'i'), function (err) { 39 | should(err.message).equal('git not found on your system.'); 40 | done(); 41 | }); 42 | }); 43 | 44 | it('should pass on cwd', function (done) { 45 | git.which = function (app, cb) { 46 | cb(); 47 | }; 48 | git.exec = function (app, args, extra, cb) { 49 | extra.cwd.should.equal('foo'); 50 | done(); 51 | }; 52 | git.getStatusByMatcher(new RegExp('^(M)\\s', 'i'), 'foo', function (err) { 53 | should(err.message).equal('git not found on your system.'); 54 | done(); 55 | }); 56 | }); 57 | 58 | it('should return a file returned by git status', function (done) { 59 | git.which = function (app, cb) { 60 | cb(); 61 | }; 62 | git.exec = function (app, args, extra, cb) { 63 | cb(null, 'M index.js'); 64 | }; 65 | git.getStatusByMatcher(new RegExp('^(M)\\s', 'i'), function (err, data) { 66 | should.not.exist(err); 67 | should.exist(data); 68 | should.exist(data[0]); 69 | data[0].should.eql({ 70 | mode: 'M', 71 | path: 'index.js' 72 | }); 73 | done(); 74 | }); 75 | }); 76 | 77 | 78 | it('should return several files from git status', function (done) { 79 | git.which = function (app, cb) { 80 | cb(); 81 | }; 82 | git.exec = function (app, args, extra, cb) { 83 | cb(null, 'M index.js\nM foo.js\nM bar.js'); 84 | }; 85 | git.getStatusByMatcher(new RegExp('^(M)\\s', 'i'), function (err, data) { 86 | should.not.exist(err); 87 | should.exist(data); 88 | should.exist(data[0]); 89 | data.length.should.equal(3); 90 | done(); 91 | }); 92 | }); 93 | 94 | it('should return statused files which match pattern', function (done) { 95 | git.which = function (app, cb) { 96 | cb(); 97 | }; 98 | git.exec = function (app, args, extra, cb) { 99 | cb(null, 'M index.js\nD foo.js\nM bar.js'); 100 | }; 101 | git.getStatusByMatcher(new RegExp('^(M)\\s', 'i'), function (err, data) { 102 | should.not.exist(err); 103 | data.length.should.equal(2); 104 | data[0].should.eql({ mode: 'M', path: 'index.js' }); 105 | data[1].should.eql({ mode: 'M', path: 'bar.js' }); 106 | done(); 107 | }); 108 | }); 109 | 110 | it('should return statused files which match complex pattern', function (done) { 111 | git.which = function (app, cb) { 112 | cb(); 113 | }; 114 | git.exec = function (app, args, extra, cb) { 115 | cb(null, 'M index.js\nD foo.js\nM bar.js\nA baz.js'); 116 | }; 117 | git.getStatusByMatcher(new RegExp('^(A|D)\\s', 'i'), function (err, data) { 118 | should.not.exist(err); 119 | data.length.should.equal(2); 120 | data[0].should.eql({ mode: 'D', path: 'foo.js' }); 121 | data[1].should.eql({ mode: 'A', path: 'baz.js' }); 122 | done(); 123 | }); 124 | }); 125 | 126 | it('should return statused files which match complex pattern', function (done) { 127 | git.which = function (app, cb) { 128 | cb(); 129 | }; 130 | git.exec = function (app, args, extra, cb) { 131 | cb(null, 'C index.js\n?? foo.js\n bar.js\n!! baz.js'); 132 | }; 133 | git.getStatusByMatcher(new RegExp('^(C|!!|\\?\\?)\\s', 'i'), function (err, data) { 134 | should.not.exist(err); 135 | data.length.should.equal(3); 136 | data[0].should.eql({ mode: 'C', path: 'index.js' }); 137 | data[1].should.eql({ mode: '??', path: 'foo.js' }); 138 | data[2].should.eql({ mode: '!!', path: 'baz.js' }); 139 | done(); 140 | }); 141 | }); 142 | 143 | }); 144 | -------------------------------------------------------------------------------- /test/main.js: -------------------------------------------------------------------------------- 1 | /*global describe, it*/ 2 | 'use strict'; 3 | 4 | var should = require('should'), 5 | through = require('through2'), 6 | fs = require('fs'), 7 | join = require('path').join, 8 | git = require('../lib/git'); 9 | 10 | require('mocha'); 11 | 12 | var filePath = join(__dirname, './fixtures/*.txt'), 13 | expectedFile = join(__dirname, './fixtures/a.txt'); 14 | 15 | var gutil = require('gulp-util'), 16 | gulp = require('gulp'), 17 | gitmodified = require('../'); 18 | 19 | describe('gulp-gitmodified', function () { 20 | 21 | it('should return a stream', function (done) { 22 | var stream = gitmodified(); 23 | should.exist(stream.on); 24 | should.exist(stream.write); 25 | done(); 26 | }); 27 | 28 | it('should call git library with a tester', function (done) { 29 | git.getStatusByMatcher = function (tester) { 30 | should.exist(tester); 31 | done(); 32 | }; 33 | var instream = gulp.src(filePath); 34 | instream.pipe(gitmodified()); 35 | }); 36 | 37 | it('should default to modified mode', function (done) { 38 | git.getStatusByMatcher = function (tester) { 39 | tester.toString().should.equal('/^(M)\\s/i'); 40 | done(); 41 | }; 42 | var instream = gulp.src(filePath); 43 | instream.pipe(gitmodified()); 44 | }); 45 | 46 | describe('acccept custom input', function () { 47 | it('should allow short hand', function (done) { 48 | git.getStatusByMatcher = function (tester) { 49 | tester.toString().should.equal('/^(A)\\s/i'); 50 | done(); 51 | }; 52 | var instream = gulp.src(filePath); 53 | instream.pipe(gitmodified('A')); 54 | }); 55 | 56 | it('should allow multiple separated short hands', function (done) { 57 | git.getStatusByMatcher = function (tester) { 58 | tester.toString().should.equal('/^(A|D)\\s/i'); 59 | done(); 60 | }; 61 | var instream = gulp.src(filePath); 62 | instream.pipe(gitmodified(['A', 'D'])); 63 | }); 64 | 65 | it('should allow any value', function (done) { 66 | git.getStatusByMatcher = function (tester) { 67 | tester.toString().should.equal('/^(foo)\\s/i'); 68 | done(); 69 | }; 70 | var instream = gulp.src(filePath); 71 | instream.pipe(gitmodified('foo')); 72 | }); 73 | 74 | it('should allow override of git root', function (done, baseDir) { 75 | var expected = 'myBaseDir'; 76 | git.getStatusByMatcher = function (tester, actual) { 77 | actual.should.equal(expected); 78 | tester.toString().should.equal('/^(foo)\\s/i'); 79 | done(); 80 | }; 81 | var instream = gulp.src(filePath); 82 | instream.pipe(gitmodified({ 83 | modes: 'foo', 84 | gitCwd: expected 85 | })); 86 | }); 87 | 88 | it('should default to modified if only git cwd is passed', function (done, baseDir) { 89 | var expected = 'myBaseDir'; 90 | git.getStatusByMatcher = function (tester, actual) { 91 | actual.should.equal(expected); 92 | tester.toString().should.equal('/^(M)\\s/i'); 93 | done(); 94 | }; 95 | var instream = gulp.src(filePath); 96 | instream.pipe(gitmodified({ 97 | gitCwd: expected 98 | })); 99 | }); 100 | 101 | it('should allow override of git root and modes array', function (done, baseDir) { 102 | var expected = 'myBaseDir'; 103 | git.getStatusByMatcher = function (tester, actual) { 104 | actual.should.equal(expected); 105 | tester.toString().should.equal('/^(foo|bar)\\s/i'); 106 | done(); 107 | }; 108 | var instream = gulp.src(filePath); 109 | instream.pipe(gitmodified({ 110 | modes: ['foo', 'bar'], 111 | gitCwd: expected 112 | })); 113 | }); 114 | }); 115 | 116 | describe('map mode from named string to short hand', function () { 117 | it('should map for "modified"', function (done) { 118 | git.getStatusByMatcher = function (tester) { 119 | tester.toString().should.equal('/^(M)\\s/i'); 120 | done(); 121 | }; 122 | var instream = gulp.src(filePath); 123 | instream.pipe(gitmodified('modified')); 124 | }); 125 | 126 | it('should map for "added"', function (done) { 127 | git.getStatusByMatcher = function (tester) { 128 | tester.toString().should.equal('/^(A)\\s/i'); 129 | done(); 130 | }; 131 | var instream = gulp.src(filePath); 132 | instream.pipe(gitmodified('added')); 133 | }); 134 | 135 | it('should map for "deleted"', function (done) { 136 | git.getStatusByMatcher = function (tester) { 137 | tester.toString().should.equal('/^(D)\\s/i'); 138 | done(); 139 | }; 140 | var instream = gulp.src(filePath); 141 | instream.pipe(gitmodified('deleted')); 142 | }); 143 | 144 | it('should map for "renamed"', function (done) { 145 | git.getStatusByMatcher = function (tester) { 146 | tester.toString().should.equal('/^(R)\\s/i'); 147 | done(); 148 | }; 149 | var instream = gulp.src(filePath); 150 | instream.pipe(gitmodified('renamed')); 151 | }); 152 | 153 | it('should map for "copied"', function (done) { 154 | git.getStatusByMatcher = function (tester) { 155 | tester.toString().should.equal('/^(C)\\s/i'); 156 | done(); 157 | }; 158 | var instream = gulp.src(filePath); 159 | instream.pipe(gitmodified('copied')); 160 | }); 161 | 162 | it('should map for "updated"', function (done) { 163 | git.getStatusByMatcher = function (tester) { 164 | tester.toString().should.equal('/^(U)\\s/i'); 165 | done(); 166 | }; 167 | var instream = gulp.src(filePath); 168 | instream.pipe(gitmodified('updated')); 169 | }); 170 | 171 | it('should map for "untracked"', function (done) { 172 | git.getStatusByMatcher = function (tester) { 173 | tester.toString().should.equal('/^(\\?\\?)\\s/i'); 174 | done(); 175 | }; 176 | var instream = gulp.src(filePath); 177 | instream.pipe(gitmodified('untracked')); 178 | }); 179 | 180 | it('should map for "ignored"', function (done) { 181 | git.getStatusByMatcher = function (tester) { 182 | tester.toString().should.equal('/^(!!)\\s/i'); 183 | done(); 184 | }; 185 | var instream = gulp.src(filePath); 186 | instream.pipe(gitmodified('ignored')); 187 | }); 188 | 189 | it('should map multiple modes from named strings to multiple short hand', function (done) { 190 | git.getStatusByMatcher = function (tester) { 191 | tester.toString().should.equal('/^(A|D|\\?\\?)\\s/i'); 192 | done(); 193 | }; 194 | var instream = gulp.src(filePath); 195 | instream.pipe(gitmodified(['added', 'deleted', 'untracked'])); 196 | }); 197 | }); 198 | 199 | it('should return modified files', function (done) { 200 | git.getStatusByMatcher = function (tester, baseDir, stagedOnly, cb) { 201 | if (typeof baseDir === 'function') { 202 | cb = baseDir; 203 | baseDir = void 0; 204 | } 205 | cb(null, [{ path: 'a.txt', mode: 'M' }]); 206 | }; 207 | var instream = gulp.src(filePath); 208 | instream 209 | .pipe(gitmodified('modified')) 210 | .pipe(through.obj(function(file) { 211 | should.exist(file); 212 | should.exist(file.path); 213 | should.exist(file.contents); 214 | file.path.should.equal(expectedFile); 215 | done(); 216 | })); 217 | }); 218 | 219 | it('should return deleted files', function (done) { 220 | git.getStatusByMatcher = function (tester, baseDir, stagedOnly, cb) { 221 | if (typeof baseDir === 'function') { 222 | cb = baseDir; 223 | baseDir = void 0; 224 | } 225 | cb(null, [{ path: 'a.txt', mode: 'D' }]); 226 | }; 227 | var instream = gulp.src(filePath); 228 | instream 229 | .pipe(gitmodified('deleted')) 230 | .pipe(through.obj(function(file) { 231 | should.exist(file); 232 | should.exist(file.isDeleted()); 233 | should.not.exist(file.contents); 234 | done(); 235 | })); 236 | }); 237 | 238 | it('should throw error when git returns error', function (done) { 239 | git.getStatusByMatcher = function (tester, baseDir, stagedOnly, cb) { 240 | if (typeof baseDir === 'function') { 241 | cb = baseDir; 242 | baseDir = void 0; 243 | } 244 | return cb(new Error('new error')); 245 | }; 246 | var instream = gulp.src(filePath); 247 | instream 248 | .pipe(gitmodified()) 249 | .on('error', function (err) { 250 | should.exist(err); 251 | err.message.should.equal('new error'); 252 | done(); 253 | }); 254 | }); 255 | 256 | it('should throw gulp specific error', function (done) { 257 | git.getStatusByMatcher = function (tester, baseDir, stagedOnly, cb) { 258 | if (typeof baseDir === 'function') { 259 | cb = baseDir; 260 | baseDir = void 0; 261 | } 262 | return cb(new Error('new error')); 263 | }; 264 | var instream = gulp.src(filePath); 265 | instream 266 | .pipe(gitmodified()) 267 | .on('error', function (err) { 268 | should.exist(err.plugin); 269 | err.plugin.should.equal('gulp-gitmodified'); 270 | done(); 271 | }); 272 | }); 273 | 274 | it('should pass on no files when no status is returned', function (done) { 275 | var numFiles = 0; 276 | git.getStatusByMatcher = function (tester, baseDir, stagedOnly, cb) { 277 | if (typeof baseDir === 'function') { 278 | cb = baseDir; 279 | baseDir = void 0; 280 | } 281 | cb(null, []); 282 | }; 283 | var instream = gulp.src(filePath); 284 | instream 285 | .pipe(gitmodified('deleted')) 286 | .pipe(through.obj(function() { 287 | ++numFiles; 288 | done(); 289 | }, function (callback) { 290 | numFiles.should.equal(0); 291 | callback(); 292 | done(); 293 | })); 294 | }); 295 | 296 | it('should handle streamed files', function (done) { 297 | var streamedFile = new gutil.File({ 298 | path: 'test/fixtures/a.txt', 299 | cwd: 'test/', 300 | base: 'test/fixtures/', 301 | contents: fs.createReadStream(join(__dirname, '/fixtures/a.txt')) 302 | }); 303 | 304 | git.getStatusByMatcher = function (tester, baseDir, stagedOnly, cb) { 305 | if (typeof baseDir === 'function') { 306 | cb = baseDir; 307 | baseDir = void 0; 308 | } 309 | cb(null, [{ path: 'a.txt', mode: 'M' }]); 310 | }; 311 | var outstream = gitmodified(); 312 | outstream.on('data', function(file) { 313 | should.exist(file); 314 | should.exist(file.path); 315 | should.exist(file.contents); 316 | should(file.isNull()).not.equal(true); 317 | should.exist(file.isStream()); 318 | file.contents.should.equal(streamedFile.contents); 319 | done(); 320 | }); 321 | 322 | outstream.write(streamedFile); 323 | }); 324 | 325 | it('should handle folders', function (done) { 326 | git.getStatusByMatcher = function (tester, baseDir, stagedOnly, cb) { 327 | if (typeof baseDir === 'function') { 328 | cb = baseDir; 329 | baseDir = void 0; 330 | } 331 | cb(null, [{ path: 'fixtures/', mode: 'M' }]); 332 | }; 333 | 334 | var instream = gulp.src(join(__dirname, './fixtures')); 335 | var outstream = gitmodified(); 336 | 337 | outstream.on('data', function(file) { 338 | should.exist(file); 339 | should.exist(file.path); 340 | file.relative.should.equal('fixtures'); 341 | should.exist(file.isNull()); 342 | done(); 343 | }); 344 | 345 | instream.pipe(outstream); 346 | }); 347 | 348 | }); 349 | --------------------------------------------------------------------------------