├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── bin └── nodetouch.js ├── index.js ├── package-lock.json ├── package.json └── test ├── basic.js └── bin.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | coverage/ 3 | .nyc_output/ 4 | nyc_output/ 5 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | node_js: 4 | - 8 5 | - 6 6 | - 4 7 | notifications: 8 | email: false 9 | cache: 10 | directories: 11 | - $HOME/.npm 12 | - node_modules 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # node-touch 2 | 3 | For all your node touching needs. 4 | 5 | ## Installing 6 | 7 | ```bash 8 | npm install touch 9 | ``` 10 | 11 | ## CLI Usage: 12 | 13 | See `man touch` 14 | 15 | This package exports a binary called `nodetouch` that works mostly 16 | like the unix builtin `touch(1)`. 17 | 18 | ## API Usage: 19 | 20 | ```javascript 21 | var touch = require("touch") 22 | ``` 23 | 24 | Gives you the following functions: 25 | 26 | * `touch(filename, options, cb)` 27 | * `touch.sync(filename, options)` 28 | * `touch.ftouch(fd, options, cb)` 29 | * `touch.ftouchSync(fd, options)` 30 | 31 | All the `options` objects are optional. 32 | 33 | All the async functions return a Promise. If a callback function is 34 | provided, then it's attached to the Promise. 35 | 36 | ## Options 37 | 38 | * `force` like `touch -f` Boolean 39 | * `time` like `touch -t ` Can be a Date object, or any parseable 40 | Date string, or epoch ms number. 41 | * `atime` like `touch -a` Can be either a Boolean, or a Date. 42 | * `mtime` like `touch -m` Can be either a Boolean, or a Date. 43 | * `ref` like `touch -r ` Must be path to a file. 44 | * `nocreate` like `touch -c` Boolean 45 | 46 | If neither `atime` nor `mtime` are set, then both values are set. If 47 | one of them is set, then the other is not. 48 | 49 | ## cli 50 | 51 | This package creates a `nodetouch` command line executable that works 52 | very much like the unix builtin `touch(1)` 53 | -------------------------------------------------------------------------------- /bin/nodetouch.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const touch = require("../index.js") 3 | 4 | const usage = code => { 5 | console[code ? 'error' : 'log']( 6 | 'usage:\n' + 7 | 'touch [-acfm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ...' 8 | ) 9 | process.exit(code) 10 | } 11 | 12 | const singleFlags = { 13 | a: 'atime', 14 | m: 'mtime', 15 | c: 'nocreate', 16 | f: 'force' 17 | } 18 | 19 | const singleOpts = { 20 | r: 'ref', 21 | t: 'time' 22 | } 23 | 24 | const files = [] 25 | const args = process.argv.slice(2) 26 | const options = {} 27 | for (let i = 0; i < args.length; i++) { 28 | const arg = args[i] 29 | if (!arg.match(/^-/)) { 30 | files.push(arg) 31 | continue 32 | } 33 | 34 | // expand shorthands 35 | if (arg.charAt(1) !== '-') { 36 | const expand = [] 37 | for (let f = 1; f < arg.length; f++) { 38 | const fc = arg.charAt(f) 39 | const sf = singleFlags[fc] 40 | const so = singleOpts[fc] 41 | if (sf) 42 | expand.push('--' + sf) 43 | else if (so) { 44 | const soslice = arg.slice(f + 1) 45 | const soval = soslice.charAt(0) === '=' ? soslice : '=' + soslice 46 | expand.push('--' + so + soval) 47 | f = arg.length 48 | } else if (arg !== '-' + fc) 49 | expand.push('-' + fc) 50 | } 51 | if (expand.length) { 52 | args.splice.apply(args, [i, 1].concat(expand)) 53 | i-- 54 | continue 55 | } 56 | } 57 | 58 | const argsplit = arg.split('=') 59 | const key = argsplit.shift().replace(/^\-\-/, '') 60 | const val = argsplit.length ? argsplit.join('=') : null 61 | 62 | switch (key) { 63 | case 'time': 64 | const timestr = val || args[++i] 65 | // [-t [[CC]YY]MMDDhhmm[.SS]] 66 | const parsedtime = timestr.match( 67 | /^(([0-9]{2})?([0-9]{2}))?([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})(\.([0-9]{2}))?$/ 68 | ) 69 | if (!parsedtime) { 70 | console.error('touch: out of range or illegal ' + 71 | 'time specification: ' + 72 | '[[CC]YY]MMDDhhmm[.SS]') 73 | process.exit(1) 74 | } else { 75 | const y = +parsedtime[1] 76 | const year = parsedtime[2] ? y 77 | : y <= 68 ? 2000 + y 78 | : 1900 + y 79 | 80 | const MM = +parsedtime[4] - 1 81 | const dd = +parsedtime[5] 82 | const hh = +parsedtime[6] 83 | const mm = +parsedtime[7] 84 | const ss = +parsedtime[8] 85 | 86 | options.time = new Date(Date.UTC(year, MM, dd, hh, mm, ss)) 87 | } 88 | continue 89 | 90 | case 'ref': 91 | options.ref = val || args[++i] 92 | continue 93 | 94 | case 'mtime': 95 | case 'nocreate': 96 | case 'atime': 97 | case 'force': 98 | options[key] = true 99 | continue 100 | 101 | default: 102 | console.error('touch: illegal option -- ' + arg) 103 | usage(1) 104 | } 105 | } 106 | 107 | if (!files.length) 108 | usage() 109 | 110 | process.exitCode = 0 111 | Promise.all(files.map(f => touch(f, options))) 112 | .catch(er => process.exitCode = 1) 113 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const EE = require('events').EventEmitter 4 | const cons = require('constants') 5 | const fs = require('fs') 6 | 7 | module.exports = (f, options, cb) => { 8 | if (typeof options === 'function') 9 | cb = options, options = {} 10 | 11 | const p = new Promise((res, rej) => { 12 | new Touch(validOpts(options, f, null)) 13 | .on('done', res).on('error', rej) 14 | }) 15 | 16 | return cb ? p.then(res => cb(null, res), cb) : p 17 | } 18 | 19 | module.exports.sync = module.exports.touchSync = (f, options) => 20 | (new TouchSync(validOpts(options, f, null)), undefined) 21 | 22 | module.exports.ftouch = (fd, options, cb) => { 23 | if (typeof options === 'function') 24 | cb = options, options = {} 25 | 26 | const p = new Promise((res, rej) => { 27 | new Touch(validOpts(options, null, fd)) 28 | .on('done', res).on('error', rej) 29 | }) 30 | 31 | return cb ? p.then(res => cb(null, res), cb) : p 32 | } 33 | 34 | module.exports.ftouchSync = (fd, opt) => 35 | (new TouchSync(validOpts(opt, null, fd)), undefined) 36 | 37 | const validOpts = (options, path, fd) => { 38 | options = Object.create(options || {}) 39 | options.fd = fd 40 | options.path = path 41 | 42 | // {mtime: true}, {ctime: true} 43 | // If set to something else, then treat as epoch ms value 44 | const now = new Date(options.time || Date.now()).getTime() / 1000 45 | if (!options.atime && !options.mtime) 46 | options.atime = options.mtime = now 47 | else { 48 | if (true === options.atime) 49 | options.atime = now 50 | 51 | if (true === options.mtime) 52 | options.mtime = now 53 | } 54 | 55 | let oflags = 0 56 | if (!options.force) 57 | oflags = oflags | cons.O_RDWR 58 | 59 | if (!options.nocreate) 60 | oflags = oflags | cons.O_CREAT 61 | 62 | options.oflags = oflags 63 | return options 64 | } 65 | 66 | class Touch extends EE { 67 | constructor (options) { 68 | super(options) 69 | this.fd = options.fd 70 | this.path = options.path 71 | this.atime = options.atime 72 | this.mtime = options.mtime 73 | this.ref = options.ref 74 | this.nocreate = !!options.nocreate 75 | this.force = !!options.force 76 | this.closeAfter = options.closeAfter 77 | this.oflags = options.oflags 78 | this.options = options 79 | 80 | if (typeof this.fd !== 'number') { 81 | this.closeAfter = true 82 | this.open() 83 | } else 84 | this.onopen(null, this.fd) 85 | } 86 | 87 | emit (ev, data) { 88 | // we only emit when either done or erroring 89 | // in both cases, need to close 90 | this.close() 91 | return super.emit(ev, data) 92 | } 93 | 94 | close () { 95 | if (typeof this.fd === 'number' && this.closeAfter) 96 | fs.close(this.fd, () => {}) 97 | } 98 | 99 | open () { 100 | fs.open(this.path, this.oflags, (er, fd) => this.onopen(er, fd)) 101 | } 102 | 103 | onopen (er, fd) { 104 | if (er) { 105 | if (er.code === 'EISDIR') 106 | this.onopen(null, null) 107 | else if (er.code === 'ENOENT' && this.nocreate) 108 | this.emit('done') 109 | else 110 | this.emit('error', er) 111 | } else { 112 | this.fd = fd 113 | if (this.ref) 114 | this.statref() 115 | else if (!this.atime || !this.mtime) 116 | this.fstat() 117 | else 118 | this.futimes() 119 | } 120 | } 121 | 122 | statref () { 123 | fs.stat(this.ref, (er, st) => { 124 | if (er) 125 | this.emit('error', er) 126 | else 127 | this.onstatref(st) 128 | }) 129 | } 130 | 131 | onstatref (st) { 132 | this.atime = this.atime && st.atime.getTime()/1000 133 | this.mtime = this.mtime && st.mtime.getTime()/1000 134 | if (!this.atime || !this.mtime) 135 | this.fstat() 136 | else 137 | this.futimes() 138 | } 139 | 140 | fstat () { 141 | const stat = this.fd ? 'fstat' : 'stat' 142 | const target = this.fd || this.path 143 | fs[stat](target, (er, st) => { 144 | if (er) 145 | this.emit('error', er) 146 | else 147 | this.onfstat(st) 148 | }) 149 | } 150 | 151 | onfstat (st) { 152 | if (typeof this.atime !== 'number') 153 | this.atime = st.atime.getTime()/1000 154 | 155 | if (typeof this.mtime !== 'number') 156 | this.mtime = st.mtime.getTime()/1000 157 | 158 | this.futimes() 159 | } 160 | 161 | futimes () { 162 | const utimes = this.fd ? 'futimes' : 'utimes' 163 | const target = this.fd || this.path 164 | fs[utimes](target, ''+this.atime, ''+this.mtime, er => { 165 | if (er) 166 | this.emit('error', er) 167 | else 168 | this.emit('done') 169 | }) 170 | } 171 | } 172 | 173 | class TouchSync extends Touch { 174 | open () { 175 | try { 176 | this.onopen(null, fs.openSync(this.path, this.oflags)) 177 | } catch (er) { 178 | this.onopen(er) 179 | } 180 | } 181 | 182 | statref () { 183 | let threw = true 184 | try { 185 | this.onstatref(fs.statSync(this.ref)) 186 | threw = false 187 | } finally { 188 | if (threw) 189 | this.close() 190 | } 191 | } 192 | 193 | fstat () { 194 | let threw = true 195 | const stat = this.fd ? 'fstatSync' : 'statSync' 196 | const target = this.fd || this.path 197 | try { 198 | this.onfstat(fs[stat](target)) 199 | threw = false 200 | } finally { 201 | if (threw) 202 | this.close() 203 | } 204 | } 205 | 206 | futimes () { 207 | let threw = true 208 | const utimes = this.fd ? 'futimesSync' : 'utimesSync' 209 | const target = this.fd || this.path 210 | try { 211 | fs[utimes](target, this.atime, this.mtime) 212 | threw = false 213 | } finally { 214 | if (threw) 215 | this.close() 216 | } 217 | this.emit('done') 218 | } 219 | 220 | close () { 221 | if (typeof this.fd === 'number' && this.closeAfter) 222 | try { fs.closeSync(this.fd) } catch (er) {} 223 | } 224 | } 225 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "touch", 3 | "version": "3.1.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "touch", 9 | "version": "3.1.1", 10 | "license": "ISC", 11 | "bin": { 12 | "nodetouch": "bin/nodetouch.js" 13 | }, 14 | "devDependencies": { 15 | "mutate-fs": "^1.1.0", 16 | "tap": "^10.7.0" 17 | } 18 | }, 19 | "node_modules/ansi-regex": { 20 | "version": "2.1.1", 21 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 22 | "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", 23 | "dev": true, 24 | "engines": { 25 | "node": ">=0.10.0" 26 | } 27 | }, 28 | "node_modules/ansi-styles": { 29 | "version": "2.2.1", 30 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 31 | "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", 32 | "dev": true, 33 | "engines": { 34 | "node": ">=0.10.0" 35 | } 36 | }, 37 | "node_modules/argparse": { 38 | "version": "1.0.10", 39 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 40 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 41 | "dev": true, 42 | "dependencies": { 43 | "sprintf-js": "~1.0.2" 44 | } 45 | }, 46 | "node_modules/asn1": { 47 | "version": "0.2.6", 48 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 49 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 50 | "dev": true, 51 | "dependencies": { 52 | "safer-buffer": "~2.1.0" 53 | } 54 | }, 55 | "node_modules/assert-plus": { 56 | "version": "0.2.0", 57 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", 58 | "integrity": "sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw==", 59 | "dev": true, 60 | "engines": { 61 | "node": ">=0.8" 62 | } 63 | }, 64 | "node_modules/asynckit": { 65 | "version": "0.4.0", 66 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 67 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 68 | "dev": true 69 | }, 70 | "node_modules/aws-sign2": { 71 | "version": "0.6.0", 72 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", 73 | "integrity": "sha512-JnJpAS0p9RmixkOvW2XwDxxzs1bd4/VAGIl6Q0EC5YOo+p+hqIhtDhn/nmFnB/xUNXbLkpE2mOjgVIBRKD4xYw==", 74 | "dev": true, 75 | "engines": { 76 | "node": "*" 77 | } 78 | }, 79 | "node_modules/aws4": { 80 | "version": "1.12.0", 81 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", 82 | "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", 83 | "dev": true 84 | }, 85 | "node_modules/balanced-match": { 86 | "version": "1.0.2", 87 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 88 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 89 | "dev": true 90 | }, 91 | "node_modules/bcrypt-pbkdf": { 92 | "version": "1.0.2", 93 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 94 | "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", 95 | "dev": true, 96 | "dependencies": { 97 | "tweetnacl": "^0.14.3" 98 | } 99 | }, 100 | "node_modules/bind-obj-methods": { 101 | "version": "1.0.0", 102 | "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-1.0.0.tgz", 103 | "integrity": "sha512-hIPy2U/FBRlSwCfqrHgY9Te/A35F+4Jf+c4ewfwwpGzUlnxAv8MBMWg49ywM4raR9ZGyq6OyxwHUizz8GKBUkg==", 104 | "dev": true 105 | }, 106 | "node_modules/bluebird": { 107 | "version": "3.7.2", 108 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 109 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 110 | "dev": true 111 | }, 112 | "node_modules/boom": { 113 | "version": "2.10.1", 114 | "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", 115 | "integrity": "sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q==", 116 | "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", 117 | "dev": true, 118 | "dependencies": { 119 | "hoek": "2.x.x" 120 | }, 121 | "engines": { 122 | "node": ">=0.10.40" 123 | } 124 | }, 125 | "node_modules/brace-expansion": { 126 | "version": "1.1.11", 127 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 128 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 129 | "dev": true, 130 | "dependencies": { 131 | "balanced-match": "^1.0.0", 132 | "concat-map": "0.0.1" 133 | } 134 | }, 135 | "node_modules/caseless": { 136 | "version": "0.11.0", 137 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", 138 | "integrity": "sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ==", 139 | "dev": true 140 | }, 141 | "node_modules/chalk": { 142 | "version": "1.1.3", 143 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 144 | "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", 145 | "dev": true, 146 | "dependencies": { 147 | "ansi-styles": "^2.2.1", 148 | "escape-string-regexp": "^1.0.2", 149 | "has-ansi": "^2.0.0", 150 | "strip-ansi": "^3.0.0", 151 | "supports-color": "^2.0.0" 152 | }, 153 | "engines": { 154 | "node": ">=0.10.0" 155 | } 156 | }, 157 | "node_modules/clean-yaml-object": { 158 | "version": "0.1.0", 159 | "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", 160 | "integrity": "sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==", 161 | "dev": true, 162 | "engines": { 163 | "node": ">=0.10.0" 164 | } 165 | }, 166 | "node_modules/color-support": { 167 | "version": "1.1.3", 168 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 169 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 170 | "dev": true, 171 | "bin": { 172 | "color-support": "bin.js" 173 | } 174 | }, 175 | "node_modules/combined-stream": { 176 | "version": "1.0.8", 177 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 178 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 179 | "dev": true, 180 | "dependencies": { 181 | "delayed-stream": "~1.0.0" 182 | }, 183 | "engines": { 184 | "node": ">= 0.8" 185 | } 186 | }, 187 | "node_modules/commander": { 188 | "version": "2.20.3", 189 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 190 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 191 | "dev": true 192 | }, 193 | "node_modules/concat-map": { 194 | "version": "0.0.1", 195 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 196 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 197 | "dev": true 198 | }, 199 | "node_modules/core-util-is": { 200 | "version": "1.0.3", 201 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 202 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 203 | "dev": true 204 | }, 205 | "node_modules/coveralls": { 206 | "version": "2.13.3", 207 | "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.3.tgz", 208 | "integrity": "sha512-iiAmn+l1XqRwNLXhW8Rs5qHZRFMYp9ZIPjEOVRpC/c4so6Y/f4/lFi0FfR5B9cCqgyhkJ5cZmbvcVRfP8MHchw==", 209 | "dev": true, 210 | "dependencies": { 211 | "js-yaml": "3.6.1", 212 | "lcov-parse": "0.0.10", 213 | "log-driver": "1.2.5", 214 | "minimist": "1.2.0", 215 | "request": "2.79.0" 216 | }, 217 | "bin": { 218 | "coveralls": "bin/coveralls.js" 219 | }, 220 | "engines": { 221 | "node": ">=0.8.6" 222 | } 223 | }, 224 | "node_modules/coveralls/node_modules/esprima": { 225 | "version": "2.7.3", 226 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", 227 | "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", 228 | "dev": true, 229 | "bin": { 230 | "esparse": "bin/esparse.js", 231 | "esvalidate": "bin/esvalidate.js" 232 | }, 233 | "engines": { 234 | "node": ">=0.10.0" 235 | } 236 | }, 237 | "node_modules/coveralls/node_modules/js-yaml": { 238 | "version": "3.6.1", 239 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", 240 | "integrity": "sha512-BLv3oxhfET+w5fjPwq3PsAsxzi9i3qzU//HMpWVz0A6KplF86HdR9x2TGnv9DXhSUrO7LO8czUiTd3yb3mLSvg==", 241 | "dev": true, 242 | "dependencies": { 243 | "argparse": "^1.0.7", 244 | "esprima": "^2.6.0" 245 | }, 246 | "bin": { 247 | "js-yaml": "bin/js-yaml.js" 248 | } 249 | }, 250 | "node_modules/cross-spawn": { 251 | "version": "4.0.2", 252 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", 253 | "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", 254 | "dev": true, 255 | "dependencies": { 256 | "lru-cache": "^4.0.1", 257 | "which": "^1.2.9" 258 | } 259 | }, 260 | "node_modules/cryptiles": { 261 | "version": "2.0.5", 262 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", 263 | "integrity": "sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog==", 264 | "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", 265 | "dev": true, 266 | "dependencies": { 267 | "boom": "2.x.x" 268 | }, 269 | "engines": { 270 | "node": ">=0.10.40" 271 | } 272 | }, 273 | "node_modules/dashdash": { 274 | "version": "1.14.1", 275 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 276 | "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", 277 | "dev": true, 278 | "dependencies": { 279 | "assert-plus": "^1.0.0" 280 | }, 281 | "engines": { 282 | "node": ">=0.10" 283 | } 284 | }, 285 | "node_modules/dashdash/node_modules/assert-plus": { 286 | "version": "1.0.0", 287 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 288 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 289 | "dev": true, 290 | "engines": { 291 | "node": ">=0.8" 292 | } 293 | }, 294 | "node_modules/debug": { 295 | "version": "2.6.9", 296 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 297 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 298 | "dev": true, 299 | "dependencies": { 300 | "ms": "2.0.0" 301 | } 302 | }, 303 | "node_modules/delayed-stream": { 304 | "version": "1.0.0", 305 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 306 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 307 | "dev": true, 308 | "engines": { 309 | "node": ">=0.4.0" 310 | } 311 | }, 312 | "node_modules/diff": { 313 | "version": "1.4.0", 314 | "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", 315 | "integrity": "sha512-VzVc42hMZbYU9Sx/ltb7KYuQ6pqAw+cbFWVy4XKdkuEL2CFaRLGEnISPs7YdzaUGpi+CpIqvRmu7hPQ4T7EQ5w==", 316 | "dev": true, 317 | "engines": { 318 | "node": ">=0.3.1" 319 | } 320 | }, 321 | "node_modules/ecc-jsbn": { 322 | "version": "0.1.2", 323 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 324 | "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", 325 | "dev": true, 326 | "dependencies": { 327 | "jsbn": "~0.1.0", 328 | "safer-buffer": "^2.1.0" 329 | } 330 | }, 331 | "node_modules/escape-string-regexp": { 332 | "version": "1.0.5", 333 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 334 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 335 | "dev": true, 336 | "engines": { 337 | "node": ">=0.8.0" 338 | } 339 | }, 340 | "node_modules/esprima": { 341 | "version": "4.0.1", 342 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 343 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 344 | "dev": true, 345 | "bin": { 346 | "esparse": "bin/esparse.js", 347 | "esvalidate": "bin/esvalidate.js" 348 | }, 349 | "engines": { 350 | "node": ">=4" 351 | } 352 | }, 353 | "node_modules/events-to-array": { 354 | "version": "1.1.2", 355 | "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", 356 | "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", 357 | "dev": true 358 | }, 359 | "node_modules/extend": { 360 | "version": "3.0.2", 361 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 362 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 363 | "dev": true 364 | }, 365 | "node_modules/extsprintf": { 366 | "version": "1.3.0", 367 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 368 | "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", 369 | "dev": true, 370 | "engines": [ 371 | "node >=0.6.0" 372 | ] 373 | }, 374 | "node_modules/foreground-child": { 375 | "version": "1.5.6", 376 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", 377 | "integrity": "sha512-3TOY+4TKV0Ml83PXJQY+JFQaHNV38lzQDIzzXYg1kWdBLenGgoZhAs0CKgzI31vi2pWEpQMq/Yi4bpKwCPkw7g==", 378 | "dev": true, 379 | "dependencies": { 380 | "cross-spawn": "^4", 381 | "signal-exit": "^3.0.0" 382 | } 383 | }, 384 | "node_modules/forever-agent": { 385 | "version": "0.6.1", 386 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 387 | "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", 388 | "dev": true, 389 | "engines": { 390 | "node": "*" 391 | } 392 | }, 393 | "node_modules/form-data": { 394 | "version": "2.1.4", 395 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", 396 | "integrity": "sha512-8HWGSLAPr+AG0hBpsqi5Ob8HrLStN/LWeqhpFl14d7FJgHK48TmgLoALPz69XSUR65YJzDfLUX/BM8+MLJLghQ==", 397 | "dev": true, 398 | "dependencies": { 399 | "asynckit": "^0.4.0", 400 | "combined-stream": "^1.0.5", 401 | "mime-types": "^2.1.12" 402 | }, 403 | "engines": { 404 | "node": ">= 0.12" 405 | } 406 | }, 407 | "node_modules/fs-exists-cached": { 408 | "version": "1.0.0", 409 | "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", 410 | "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==", 411 | "dev": true 412 | }, 413 | "node_modules/fs.realpath": { 414 | "version": "1.0.0", 415 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 416 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 417 | "dev": true 418 | }, 419 | "node_modules/function-loop": { 420 | "version": "1.0.2", 421 | "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.2.tgz", 422 | "integrity": "sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==", 423 | "dev": true 424 | }, 425 | "node_modules/generate-function": { 426 | "version": "2.3.1", 427 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", 428 | "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", 429 | "dev": true, 430 | "dependencies": { 431 | "is-property": "^1.0.2" 432 | } 433 | }, 434 | "node_modules/generate-object-property": { 435 | "version": "1.2.0", 436 | "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", 437 | "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", 438 | "dev": true, 439 | "dependencies": { 440 | "is-property": "^1.0.0" 441 | } 442 | }, 443 | "node_modules/getpass": { 444 | "version": "0.1.7", 445 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 446 | "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", 447 | "dev": true, 448 | "dependencies": { 449 | "assert-plus": "^1.0.0" 450 | } 451 | }, 452 | "node_modules/getpass/node_modules/assert-plus": { 453 | "version": "1.0.0", 454 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 455 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 456 | "dev": true, 457 | "engines": { 458 | "node": ">=0.8" 459 | } 460 | }, 461 | "node_modules/glob": { 462 | "version": "7.2.3", 463 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 464 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 465 | "dev": true, 466 | "dependencies": { 467 | "fs.realpath": "^1.0.0", 468 | "inflight": "^1.0.4", 469 | "inherits": "2", 470 | "minimatch": "^3.1.1", 471 | "once": "^1.3.0", 472 | "path-is-absolute": "^1.0.0" 473 | }, 474 | "engines": { 475 | "node": "*" 476 | }, 477 | "funding": { 478 | "url": "https://github.com/sponsors/isaacs" 479 | } 480 | }, 481 | "node_modules/har-validator": { 482 | "version": "2.0.6", 483 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", 484 | "integrity": "sha512-P6tFV+wCcUL3nbyTDAvveDySfbhy0XkDtAIfZP6HITjM2WUsiPna/Eg1Yy93SFXvahqoX+kt0n+6xlXKDXYowA==", 485 | "deprecated": "this library is no longer supported", 486 | "dev": true, 487 | "dependencies": { 488 | "chalk": "^1.1.1", 489 | "commander": "^2.9.0", 490 | "is-my-json-valid": "^2.12.4", 491 | "pinkie-promise": "^2.0.0" 492 | }, 493 | "bin": { 494 | "har-validator": "bin/har-validator" 495 | }, 496 | "engines": { 497 | "node": ">=0.10" 498 | } 499 | }, 500 | "node_modules/has-ansi": { 501 | "version": "2.0.0", 502 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 503 | "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", 504 | "dev": true, 505 | "dependencies": { 506 | "ansi-regex": "^2.0.0" 507 | }, 508 | "engines": { 509 | "node": ">=0.10.0" 510 | } 511 | }, 512 | "node_modules/hawk": { 513 | "version": "3.1.3", 514 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", 515 | "integrity": "sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg==", 516 | "deprecated": "This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", 517 | "dev": true, 518 | "dependencies": { 519 | "boom": "2.x.x", 520 | "cryptiles": "2.x.x", 521 | "hoek": "2.x.x", 522 | "sntp": "1.x.x" 523 | }, 524 | "engines": { 525 | "node": ">=0.10.32" 526 | } 527 | }, 528 | "node_modules/hoek": { 529 | "version": "2.16.3", 530 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", 531 | "integrity": "sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ==", 532 | "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", 533 | "dev": true, 534 | "engines": { 535 | "node": ">=0.10.40" 536 | } 537 | }, 538 | "node_modules/http-signature": { 539 | "version": "1.1.1", 540 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", 541 | "integrity": "sha512-iUn0NcRULlDGtqNLN1Jxmzayk8ogm7NToldASyZBpM2qggbphjXzNOiw3piN8tgz+e/DRs6X5gAzFwTI6BCRcg==", 542 | "dev": true, 543 | "dependencies": { 544 | "assert-plus": "^0.2.0", 545 | "jsprim": "^1.2.2", 546 | "sshpk": "^1.7.0" 547 | }, 548 | "engines": { 549 | "node": ">=0.8", 550 | "npm": ">=1.3.7" 551 | } 552 | }, 553 | "node_modules/inflight": { 554 | "version": "1.0.6", 555 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 556 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 557 | "dev": true, 558 | "dependencies": { 559 | "once": "^1.3.0", 560 | "wrappy": "1" 561 | } 562 | }, 563 | "node_modules/inherits": { 564 | "version": "2.0.4", 565 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 566 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 567 | "dev": true 568 | }, 569 | "node_modules/is-my-ip-valid": { 570 | "version": "1.0.1", 571 | "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz", 572 | "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==", 573 | "dev": true 574 | }, 575 | "node_modules/is-my-json-valid": { 576 | "version": "2.20.6", 577 | "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz", 578 | "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==", 579 | "dev": true, 580 | "dependencies": { 581 | "generate-function": "^2.0.0", 582 | "generate-object-property": "^1.1.0", 583 | "is-my-ip-valid": "^1.0.0", 584 | "jsonpointer": "^5.0.0", 585 | "xtend": "^4.0.0" 586 | } 587 | }, 588 | "node_modules/is-property": { 589 | "version": "1.0.2", 590 | "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", 591 | "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", 592 | "dev": true 593 | }, 594 | "node_modules/is-typedarray": { 595 | "version": "1.0.0", 596 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 597 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", 598 | "dev": true 599 | }, 600 | "node_modules/isarray": { 601 | "version": "1.0.0", 602 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 603 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 604 | "dev": true 605 | }, 606 | "node_modules/isexe": { 607 | "version": "2.0.0", 608 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 609 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 610 | "dev": true 611 | }, 612 | "node_modules/isstream": { 613 | "version": "0.1.2", 614 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 615 | "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", 616 | "dev": true 617 | }, 618 | "node_modules/js-yaml": { 619 | "version": "3.14.1", 620 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 621 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 622 | "dev": true, 623 | "dependencies": { 624 | "argparse": "^1.0.7", 625 | "esprima": "^4.0.0" 626 | }, 627 | "bin": { 628 | "js-yaml": "bin/js-yaml.js" 629 | } 630 | }, 631 | "node_modules/jsbn": { 632 | "version": "0.1.1", 633 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 634 | "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", 635 | "dev": true 636 | }, 637 | "node_modules/json-schema": { 638 | "version": "0.4.0", 639 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 640 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", 641 | "dev": true 642 | }, 643 | "node_modules/json-stringify-safe": { 644 | "version": "5.0.1", 645 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 646 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 647 | "dev": true 648 | }, 649 | "node_modules/jsonpointer": { 650 | "version": "5.0.1", 651 | "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", 652 | "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", 653 | "dev": true, 654 | "engines": { 655 | "node": ">=0.10.0" 656 | } 657 | }, 658 | "node_modules/jsprim": { 659 | "version": "1.4.2", 660 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 661 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 662 | "dev": true, 663 | "dependencies": { 664 | "assert-plus": "1.0.0", 665 | "extsprintf": "1.3.0", 666 | "json-schema": "0.4.0", 667 | "verror": "1.10.0" 668 | }, 669 | "engines": { 670 | "node": ">=0.6.0" 671 | } 672 | }, 673 | "node_modules/jsprim/node_modules/assert-plus": { 674 | "version": "1.0.0", 675 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 676 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 677 | "dev": true, 678 | "engines": { 679 | "node": ">=0.8" 680 | } 681 | }, 682 | "node_modules/lcov-parse": { 683 | "version": "0.0.10", 684 | "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", 685 | "integrity": "sha512-YsL0D4QF/vNlNcHPXM832si9d2ROryFQ4r4JvcfMIiUYr1f6WULuO75YCtxNu4P+XMRHz0SfUc524+c+U3G5kg==", 686 | "dev": true 687 | }, 688 | "node_modules/log-driver": { 689 | "version": "1.2.5", 690 | "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz", 691 | "integrity": "sha512-UwqFFU6yztduP6DXcjcIjrIyvWQMv/spvrK2vji37XiUykpCm1qTUUM3zO+ER7qjL3CtmbWKAoVC5+bO2HwiNA==", 692 | "dev": true, 693 | "engines": { 694 | "node": ">=0.8.6" 695 | } 696 | }, 697 | "node_modules/lru-cache": { 698 | "version": "4.1.5", 699 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 700 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 701 | "dev": true, 702 | "dependencies": { 703 | "pseudomap": "^1.0.2", 704 | "yallist": "^2.1.2" 705 | } 706 | }, 707 | "node_modules/mime-db": { 708 | "version": "1.52.0", 709 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 710 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 711 | "dev": true, 712 | "engines": { 713 | "node": ">= 0.6" 714 | } 715 | }, 716 | "node_modules/mime-types": { 717 | "version": "2.1.35", 718 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 719 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 720 | "dev": true, 721 | "dependencies": { 722 | "mime-db": "1.52.0" 723 | }, 724 | "engines": { 725 | "node": ">= 0.6" 726 | } 727 | }, 728 | "node_modules/minimatch": { 729 | "version": "3.1.2", 730 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 731 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 732 | "dev": true, 733 | "dependencies": { 734 | "brace-expansion": "^1.1.7" 735 | }, 736 | "engines": { 737 | "node": "*" 738 | } 739 | }, 740 | "node_modules/minimist": { 741 | "version": "1.2.0", 742 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 743 | "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==", 744 | "dev": true 745 | }, 746 | "node_modules/ms": { 747 | "version": "2.0.0", 748 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 749 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 750 | "dev": true 751 | }, 752 | "node_modules/mutate-fs": { 753 | "version": "1.1.0", 754 | "resolved": "https://registry.npmjs.org/mutate-fs/-/mutate-fs-1.1.0.tgz", 755 | "integrity": "sha512-s4Zir41W2Sk9XkHto6hD39JTviRfrwSCurl7E1gOSe4HDRh822JLRGUO434Tq/jgEs6ewg1TuB8cazMHHhnnnA==", 756 | "dev": true 757 | }, 758 | "node_modules/nyc": { 759 | "version": "11.9.0", 760 | "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.9.0.tgz", 761 | "integrity": "sha512-w8OdJAhXL5izerzZMdqzYKMj/pgHJyY3qEPYBjLLxrhcVoHEY9pU5ENIiZyCgG9OR7x3VcUMoD40o6PtVpfR4g==", 762 | "bundleDependencies": [ 763 | "archy", 764 | "arrify", 765 | "caching-transform", 766 | "convert-source-map", 767 | "debug-log", 768 | "default-require-extensions", 769 | "find-cache-dir", 770 | "find-up", 771 | "foreground-child", 772 | "glob", 773 | "istanbul-lib-coverage", 774 | "istanbul-lib-hook", 775 | "istanbul-lib-instrument", 776 | "istanbul-lib-report", 777 | "istanbul-lib-source-maps", 778 | "istanbul-reports", 779 | "md5-hex", 780 | "merge-source-map", 781 | "micromatch", 782 | "mkdirp", 783 | "resolve-from", 784 | "rimraf", 785 | "signal-exit", 786 | "spawn-wrap", 787 | "test-exclude", 788 | "yargs", 789 | "yargs-parser" 790 | ], 791 | "dev": true, 792 | "dependencies": { 793 | "archy": "^1.0.0", 794 | "arrify": "^1.0.1", 795 | "caching-transform": "^1.0.0", 796 | "convert-source-map": "^1.5.1", 797 | "debug-log": "^1.0.1", 798 | "default-require-extensions": "^1.0.0", 799 | "find-cache-dir": "^0.1.1", 800 | "find-up": "^2.1.0", 801 | "foreground-child": "^1.5.3", 802 | "glob": "^7.0.6", 803 | "istanbul-lib-coverage": "^1.1.2", 804 | "istanbul-lib-hook": "^1.1.0", 805 | "istanbul-lib-instrument": "^1.10.0", 806 | "istanbul-lib-report": "^1.1.3", 807 | "istanbul-lib-source-maps": "^1.2.3", 808 | "istanbul-reports": "^1.4.0", 809 | "md5-hex": "^1.2.0", 810 | "merge-source-map": "^1.1.0", 811 | "micromatch": "^3.1.10", 812 | "mkdirp": "^0.5.0", 813 | "resolve-from": "^2.0.0", 814 | "rimraf": "^2.6.2", 815 | "signal-exit": "^3.0.1", 816 | "spawn-wrap": "^1.4.2", 817 | "test-exclude": "^4.2.0", 818 | "yargs": "11.1.0", 819 | "yargs-parser": "^8.0.0" 820 | }, 821 | "bin": { 822 | "nyc": "bin/nyc.js" 823 | } 824 | }, 825 | "node_modules/nyc/node_modules/align-text": { 826 | "version": "0.1.4", 827 | "dev": true, 828 | "inBundle": true, 829 | "license": "MIT", 830 | "optional": true, 831 | "dependencies": { 832 | "kind-of": "^3.0.2", 833 | "longest": "^1.0.1", 834 | "repeat-string": "^1.5.2" 835 | }, 836 | "engines": { 837 | "node": ">=0.10.0" 838 | } 839 | }, 840 | "node_modules/nyc/node_modules/amdefine": { 841 | "version": "1.0.1", 842 | "dev": true, 843 | "inBundle": true, 844 | "license": "BSD-3-Clause OR MIT", 845 | "engines": { 846 | "node": ">=0.4.2" 847 | } 848 | }, 849 | "node_modules/nyc/node_modules/ansi-regex": { 850 | "version": "2.1.1", 851 | "dev": true, 852 | "inBundle": true, 853 | "license": "MIT", 854 | "engines": { 855 | "node": ">=0.10.0" 856 | } 857 | }, 858 | "node_modules/nyc/node_modules/ansi-styles": { 859 | "version": "2.2.1", 860 | "dev": true, 861 | "inBundle": true, 862 | "license": "MIT", 863 | "engines": { 864 | "node": ">=0.10.0" 865 | } 866 | }, 867 | "node_modules/nyc/node_modules/append-transform": { 868 | "version": "0.4.0", 869 | "dev": true, 870 | "inBundle": true, 871 | "license": "MIT", 872 | "dependencies": { 873 | "default-require-extensions": "^1.0.0" 874 | }, 875 | "engines": { 876 | "node": ">=0.10.0" 877 | } 878 | }, 879 | "node_modules/nyc/node_modules/archy": { 880 | "version": "1.0.0", 881 | "dev": true, 882 | "inBundle": true, 883 | "license": "MIT" 884 | }, 885 | "node_modules/nyc/node_modules/arr-diff": { 886 | "version": "4.0.0", 887 | "dev": true, 888 | "inBundle": true, 889 | "license": "MIT", 890 | "engines": { 891 | "node": ">=0.10.0" 892 | } 893 | }, 894 | "node_modules/nyc/node_modules/arr-flatten": { 895 | "version": "1.1.0", 896 | "dev": true, 897 | "inBundle": true, 898 | "license": "MIT", 899 | "engines": { 900 | "node": ">=0.10.0" 901 | } 902 | }, 903 | "node_modules/nyc/node_modules/arr-union": { 904 | "version": "3.1.0", 905 | "dev": true, 906 | "inBundle": true, 907 | "license": "MIT", 908 | "engines": { 909 | "node": ">=0.10.0" 910 | } 911 | }, 912 | "node_modules/nyc/node_modules/array-unique": { 913 | "version": "0.3.2", 914 | "dev": true, 915 | "inBundle": true, 916 | "license": "MIT", 917 | "engines": { 918 | "node": ">=0.10.0" 919 | } 920 | }, 921 | "node_modules/nyc/node_modules/arrify": { 922 | "version": "1.0.1", 923 | "dev": true, 924 | "inBundle": true, 925 | "license": "MIT", 926 | "engines": { 927 | "node": ">=0.10.0" 928 | } 929 | }, 930 | "node_modules/nyc/node_modules/assign-symbols": { 931 | "version": "1.0.0", 932 | "dev": true, 933 | "inBundle": true, 934 | "license": "MIT", 935 | "engines": { 936 | "node": ">=0.10.0" 937 | } 938 | }, 939 | "node_modules/nyc/node_modules/async": { 940 | "version": "1.5.2", 941 | "dev": true, 942 | "inBundle": true, 943 | "license": "MIT" 944 | }, 945 | "node_modules/nyc/node_modules/atob": { 946 | "version": "2.1.1", 947 | "dev": true, 948 | "inBundle": true, 949 | "license": "(MIT OR Apache-2.0)", 950 | "bin": { 951 | "atob": "bin/atob.js" 952 | }, 953 | "engines": { 954 | "node": ">= 4.5.0" 955 | } 956 | }, 957 | "node_modules/nyc/node_modules/babel-code-frame": { 958 | "version": "6.26.0", 959 | "dev": true, 960 | "inBundle": true, 961 | "license": "MIT", 962 | "dependencies": { 963 | "chalk": "^1.1.3", 964 | "esutils": "^2.0.2", 965 | "js-tokens": "^3.0.2" 966 | } 967 | }, 968 | "node_modules/nyc/node_modules/babel-generator": { 969 | "version": "6.26.1", 970 | "dev": true, 971 | "inBundle": true, 972 | "license": "MIT", 973 | "dependencies": { 974 | "babel-messages": "^6.23.0", 975 | "babel-runtime": "^6.26.0", 976 | "babel-types": "^6.26.0", 977 | "detect-indent": "^4.0.0", 978 | "jsesc": "^1.3.0", 979 | "lodash": "^4.17.4", 980 | "source-map": "^0.5.7", 981 | "trim-right": "^1.0.1" 982 | } 983 | }, 984 | "node_modules/nyc/node_modules/babel-messages": { 985 | "version": "6.23.0", 986 | "dev": true, 987 | "inBundle": true, 988 | "license": "MIT", 989 | "dependencies": { 990 | "babel-runtime": "^6.22.0" 991 | } 992 | }, 993 | "node_modules/nyc/node_modules/babel-runtime": { 994 | "version": "6.26.0", 995 | "dev": true, 996 | "inBundle": true, 997 | "license": "MIT", 998 | "dependencies": { 999 | "core-js": "^2.4.0", 1000 | "regenerator-runtime": "^0.11.0" 1001 | } 1002 | }, 1003 | "node_modules/nyc/node_modules/babel-template": { 1004 | "version": "6.26.0", 1005 | "dev": true, 1006 | "inBundle": true, 1007 | "license": "MIT", 1008 | "dependencies": { 1009 | "babel-runtime": "^6.26.0", 1010 | "babel-traverse": "^6.26.0", 1011 | "babel-types": "^6.26.0", 1012 | "babylon": "^6.18.0", 1013 | "lodash": "^4.17.4" 1014 | } 1015 | }, 1016 | "node_modules/nyc/node_modules/babel-traverse": { 1017 | "version": "6.26.0", 1018 | "dev": true, 1019 | "inBundle": true, 1020 | "license": "MIT", 1021 | "dependencies": { 1022 | "babel-code-frame": "^6.26.0", 1023 | "babel-messages": "^6.23.0", 1024 | "babel-runtime": "^6.26.0", 1025 | "babel-types": "^6.26.0", 1026 | "babylon": "^6.18.0", 1027 | "debug": "^2.6.8", 1028 | "globals": "^9.18.0", 1029 | "invariant": "^2.2.2", 1030 | "lodash": "^4.17.4" 1031 | } 1032 | }, 1033 | "node_modules/nyc/node_modules/babel-types": { 1034 | "version": "6.26.0", 1035 | "dev": true, 1036 | "inBundle": true, 1037 | "license": "MIT", 1038 | "dependencies": { 1039 | "babel-runtime": "^6.26.0", 1040 | "esutils": "^2.0.2", 1041 | "lodash": "^4.17.4", 1042 | "to-fast-properties": "^1.0.3" 1043 | } 1044 | }, 1045 | "node_modules/nyc/node_modules/babylon": { 1046 | "version": "6.18.0", 1047 | "dev": true, 1048 | "inBundle": true, 1049 | "license": "MIT", 1050 | "bin": { 1051 | "babylon": "bin/babylon.js" 1052 | } 1053 | }, 1054 | "node_modules/nyc/node_modules/balanced-match": { 1055 | "version": "1.0.0", 1056 | "dev": true, 1057 | "inBundle": true, 1058 | "license": "MIT" 1059 | }, 1060 | "node_modules/nyc/node_modules/base": { 1061 | "version": "0.11.2", 1062 | "dev": true, 1063 | "inBundle": true, 1064 | "license": "MIT", 1065 | "dependencies": { 1066 | "cache-base": "^1.0.1", 1067 | "class-utils": "^0.3.5", 1068 | "component-emitter": "^1.2.1", 1069 | "define-property": "^1.0.0", 1070 | "isobject": "^3.0.1", 1071 | "mixin-deep": "^1.2.0", 1072 | "pascalcase": "^0.1.1" 1073 | }, 1074 | "engines": { 1075 | "node": ">=0.10.0" 1076 | } 1077 | }, 1078 | "node_modules/nyc/node_modules/base/node_modules/define-property": { 1079 | "version": "1.0.0", 1080 | "dev": true, 1081 | "inBundle": true, 1082 | "license": "MIT", 1083 | "dependencies": { 1084 | "is-descriptor": "^1.0.0" 1085 | }, 1086 | "engines": { 1087 | "node": ">=0.10.0" 1088 | } 1089 | }, 1090 | "node_modules/nyc/node_modules/base/node_modules/is-accessor-descriptor": { 1091 | "version": "1.0.0", 1092 | "dev": true, 1093 | "inBundle": true, 1094 | "license": "MIT", 1095 | "dependencies": { 1096 | "kind-of": "^6.0.0" 1097 | }, 1098 | "engines": { 1099 | "node": ">=0.10.0" 1100 | } 1101 | }, 1102 | "node_modules/nyc/node_modules/base/node_modules/is-data-descriptor": { 1103 | "version": "1.0.0", 1104 | "dev": true, 1105 | "inBundle": true, 1106 | "license": "MIT", 1107 | "dependencies": { 1108 | "kind-of": "^6.0.0" 1109 | }, 1110 | "engines": { 1111 | "node": ">=0.10.0" 1112 | } 1113 | }, 1114 | "node_modules/nyc/node_modules/base/node_modules/is-descriptor": { 1115 | "version": "1.0.2", 1116 | "dev": true, 1117 | "inBundle": true, 1118 | "license": "MIT", 1119 | "dependencies": { 1120 | "is-accessor-descriptor": "^1.0.0", 1121 | "is-data-descriptor": "^1.0.0", 1122 | "kind-of": "^6.0.2" 1123 | }, 1124 | "engines": { 1125 | "node": ">=0.10.0" 1126 | } 1127 | }, 1128 | "node_modules/nyc/node_modules/base/node_modules/isobject": { 1129 | "version": "3.0.1", 1130 | "dev": true, 1131 | "inBundle": true, 1132 | "license": "MIT", 1133 | "engines": { 1134 | "node": ">=0.10.0" 1135 | } 1136 | }, 1137 | "node_modules/nyc/node_modules/base/node_modules/kind-of": { 1138 | "version": "6.0.2", 1139 | "dev": true, 1140 | "inBundle": true, 1141 | "license": "MIT", 1142 | "engines": { 1143 | "node": ">=0.10.0" 1144 | } 1145 | }, 1146 | "node_modules/nyc/node_modules/brace-expansion": { 1147 | "version": "1.1.11", 1148 | "dev": true, 1149 | "inBundle": true, 1150 | "license": "MIT", 1151 | "dependencies": { 1152 | "balanced-match": "^1.0.0", 1153 | "concat-map": "0.0.1" 1154 | } 1155 | }, 1156 | "node_modules/nyc/node_modules/braces": { 1157 | "version": "2.3.2", 1158 | "dev": true, 1159 | "inBundle": true, 1160 | "license": "MIT", 1161 | "dependencies": { 1162 | "arr-flatten": "^1.1.0", 1163 | "array-unique": "^0.3.2", 1164 | "extend-shallow": "^2.0.1", 1165 | "fill-range": "^4.0.0", 1166 | "isobject": "^3.0.1", 1167 | "repeat-element": "^1.1.2", 1168 | "snapdragon": "^0.8.1", 1169 | "snapdragon-node": "^2.0.1", 1170 | "split-string": "^3.0.2", 1171 | "to-regex": "^3.0.1" 1172 | }, 1173 | "engines": { 1174 | "node": ">=0.10.0" 1175 | } 1176 | }, 1177 | "node_modules/nyc/node_modules/braces/node_modules/extend-shallow": { 1178 | "version": "2.0.1", 1179 | "dev": true, 1180 | "inBundle": true, 1181 | "license": "MIT", 1182 | "dependencies": { 1183 | "is-extendable": "^0.1.0" 1184 | }, 1185 | "engines": { 1186 | "node": ">=0.10.0" 1187 | } 1188 | }, 1189 | "node_modules/nyc/node_modules/builtin-modules": { 1190 | "version": "1.1.1", 1191 | "dev": true, 1192 | "inBundle": true, 1193 | "license": "MIT", 1194 | "engines": { 1195 | "node": ">=0.10.0" 1196 | } 1197 | }, 1198 | "node_modules/nyc/node_modules/cache-base": { 1199 | "version": "1.0.1", 1200 | "dev": true, 1201 | "inBundle": true, 1202 | "license": "MIT", 1203 | "dependencies": { 1204 | "collection-visit": "^1.0.0", 1205 | "component-emitter": "^1.2.1", 1206 | "get-value": "^2.0.6", 1207 | "has-value": "^1.0.0", 1208 | "isobject": "^3.0.1", 1209 | "set-value": "^2.0.0", 1210 | "to-object-path": "^0.3.0", 1211 | "union-value": "^1.0.0", 1212 | "unset-value": "^1.0.0" 1213 | }, 1214 | "engines": { 1215 | "node": ">=0.10.0" 1216 | } 1217 | }, 1218 | "node_modules/nyc/node_modules/cache-base/node_modules/isobject": { 1219 | "version": "3.0.1", 1220 | "dev": true, 1221 | "inBundle": true, 1222 | "license": "MIT", 1223 | "engines": { 1224 | "node": ">=0.10.0" 1225 | } 1226 | }, 1227 | "node_modules/nyc/node_modules/caching-transform": { 1228 | "version": "1.0.1", 1229 | "dev": true, 1230 | "inBundle": true, 1231 | "license": "MIT", 1232 | "dependencies": { 1233 | "md5-hex": "^1.2.0", 1234 | "mkdirp": "^0.5.1", 1235 | "write-file-atomic": "^1.1.4" 1236 | }, 1237 | "engines": { 1238 | "node": ">=0.10.0" 1239 | } 1240 | }, 1241 | "node_modules/nyc/node_modules/camelcase": { 1242 | "version": "1.2.1", 1243 | "dev": true, 1244 | "inBundle": true, 1245 | "license": "MIT", 1246 | "optional": true, 1247 | "engines": { 1248 | "node": ">=0.10.0" 1249 | } 1250 | }, 1251 | "node_modules/nyc/node_modules/center-align": { 1252 | "version": "0.1.3", 1253 | "dev": true, 1254 | "inBundle": true, 1255 | "license": "MIT", 1256 | "optional": true, 1257 | "dependencies": { 1258 | "align-text": "^0.1.3", 1259 | "lazy-cache": "^1.0.3" 1260 | }, 1261 | "engines": { 1262 | "node": ">=0.10.0" 1263 | } 1264 | }, 1265 | "node_modules/nyc/node_modules/chalk": { 1266 | "version": "1.1.3", 1267 | "dev": true, 1268 | "inBundle": true, 1269 | "license": "MIT", 1270 | "dependencies": { 1271 | "ansi-styles": "^2.2.1", 1272 | "escape-string-regexp": "^1.0.2", 1273 | "has-ansi": "^2.0.0", 1274 | "strip-ansi": "^3.0.0", 1275 | "supports-color": "^2.0.0" 1276 | }, 1277 | "engines": { 1278 | "node": ">=0.10.0" 1279 | } 1280 | }, 1281 | "node_modules/nyc/node_modules/class-utils": { 1282 | "version": "0.3.6", 1283 | "dev": true, 1284 | "inBundle": true, 1285 | "license": "MIT", 1286 | "dependencies": { 1287 | "arr-union": "^3.1.0", 1288 | "define-property": "^0.2.5", 1289 | "isobject": "^3.0.0", 1290 | "static-extend": "^0.1.1" 1291 | }, 1292 | "engines": { 1293 | "node": ">=0.10.0" 1294 | } 1295 | }, 1296 | "node_modules/nyc/node_modules/class-utils/node_modules/define-property": { 1297 | "version": "0.2.5", 1298 | "dev": true, 1299 | "inBundle": true, 1300 | "license": "MIT", 1301 | "dependencies": { 1302 | "is-descriptor": "^0.1.0" 1303 | }, 1304 | "engines": { 1305 | "node": ">=0.10.0" 1306 | } 1307 | }, 1308 | "node_modules/nyc/node_modules/class-utils/node_modules/isobject": { 1309 | "version": "3.0.1", 1310 | "dev": true, 1311 | "inBundle": true, 1312 | "license": "MIT", 1313 | "engines": { 1314 | "node": ">=0.10.0" 1315 | } 1316 | }, 1317 | "node_modules/nyc/node_modules/cliui": { 1318 | "version": "2.1.0", 1319 | "dev": true, 1320 | "inBundle": true, 1321 | "license": "ISC", 1322 | "optional": true, 1323 | "dependencies": { 1324 | "center-align": "^0.1.1", 1325 | "right-align": "^0.1.1", 1326 | "wordwrap": "0.0.2" 1327 | } 1328 | }, 1329 | "node_modules/nyc/node_modules/cliui/node_modules/wordwrap": { 1330 | "version": "0.0.2", 1331 | "dev": true, 1332 | "inBundle": true, 1333 | "license": "MIT/X11", 1334 | "optional": true, 1335 | "engines": { 1336 | "node": ">=0.4.0" 1337 | } 1338 | }, 1339 | "node_modules/nyc/node_modules/code-point-at": { 1340 | "version": "1.1.0", 1341 | "dev": true, 1342 | "inBundle": true, 1343 | "license": "MIT", 1344 | "engines": { 1345 | "node": ">=0.10.0" 1346 | } 1347 | }, 1348 | "node_modules/nyc/node_modules/collection-visit": { 1349 | "version": "1.0.0", 1350 | "dev": true, 1351 | "inBundle": true, 1352 | "license": "MIT", 1353 | "dependencies": { 1354 | "map-visit": "^1.0.0", 1355 | "object-visit": "^1.0.0" 1356 | }, 1357 | "engines": { 1358 | "node": ">=0.10.0" 1359 | } 1360 | }, 1361 | "node_modules/nyc/node_modules/commondir": { 1362 | "version": "1.0.1", 1363 | "dev": true, 1364 | "inBundle": true, 1365 | "license": "MIT" 1366 | }, 1367 | "node_modules/nyc/node_modules/component-emitter": { 1368 | "version": "1.2.1", 1369 | "dev": true, 1370 | "inBundle": true, 1371 | "license": "MIT" 1372 | }, 1373 | "node_modules/nyc/node_modules/concat-map": { 1374 | "version": "0.0.1", 1375 | "dev": true, 1376 | "inBundle": true, 1377 | "license": "MIT" 1378 | }, 1379 | "node_modules/nyc/node_modules/convert-source-map": { 1380 | "version": "1.5.1", 1381 | "dev": true, 1382 | "inBundle": true, 1383 | "license": "MIT" 1384 | }, 1385 | "node_modules/nyc/node_modules/copy-descriptor": { 1386 | "version": "0.1.1", 1387 | "dev": true, 1388 | "inBundle": true, 1389 | "license": "MIT", 1390 | "engines": { 1391 | "node": ">=0.10.0" 1392 | } 1393 | }, 1394 | "node_modules/nyc/node_modules/core-js": { 1395 | "version": "2.5.6", 1396 | "dev": true, 1397 | "inBundle": true, 1398 | "license": "MIT" 1399 | }, 1400 | "node_modules/nyc/node_modules/cross-spawn": { 1401 | "version": "4.0.2", 1402 | "dev": true, 1403 | "inBundle": true, 1404 | "license": "MIT", 1405 | "dependencies": { 1406 | "lru-cache": "^4.0.1", 1407 | "which": "^1.2.9" 1408 | } 1409 | }, 1410 | "node_modules/nyc/node_modules/debug": { 1411 | "version": "2.6.9", 1412 | "dev": true, 1413 | "inBundle": true, 1414 | "license": "MIT", 1415 | "dependencies": { 1416 | "ms": "2.0.0" 1417 | } 1418 | }, 1419 | "node_modules/nyc/node_modules/debug-log": { 1420 | "version": "1.0.1", 1421 | "dev": true, 1422 | "inBundle": true, 1423 | "license": "MIT", 1424 | "engines": { 1425 | "node": ">=0.10.0" 1426 | } 1427 | }, 1428 | "node_modules/nyc/node_modules/decamelize": { 1429 | "version": "1.2.0", 1430 | "dev": true, 1431 | "inBundle": true, 1432 | "license": "MIT", 1433 | "engines": { 1434 | "node": ">=0.10.0" 1435 | } 1436 | }, 1437 | "node_modules/nyc/node_modules/decode-uri-component": { 1438 | "version": "0.2.0", 1439 | "dev": true, 1440 | "inBundle": true, 1441 | "license": "MIT", 1442 | "engines": { 1443 | "node": ">=0.10" 1444 | } 1445 | }, 1446 | "node_modules/nyc/node_modules/default-require-extensions": { 1447 | "version": "1.0.0", 1448 | "dev": true, 1449 | "inBundle": true, 1450 | "license": "MIT", 1451 | "dependencies": { 1452 | "strip-bom": "^2.0.0" 1453 | }, 1454 | "engines": { 1455 | "node": ">=0.10.0" 1456 | } 1457 | }, 1458 | "node_modules/nyc/node_modules/define-property": { 1459 | "version": "2.0.2", 1460 | "dev": true, 1461 | "inBundle": true, 1462 | "license": "MIT", 1463 | "dependencies": { 1464 | "is-descriptor": "^1.0.2", 1465 | "isobject": "^3.0.1" 1466 | }, 1467 | "engines": { 1468 | "node": ">=0.10.0" 1469 | } 1470 | }, 1471 | "node_modules/nyc/node_modules/define-property/node_modules/is-accessor-descriptor": { 1472 | "version": "1.0.0", 1473 | "dev": true, 1474 | "inBundle": true, 1475 | "license": "MIT", 1476 | "dependencies": { 1477 | "kind-of": "^6.0.0" 1478 | }, 1479 | "engines": { 1480 | "node": ">=0.10.0" 1481 | } 1482 | }, 1483 | "node_modules/nyc/node_modules/define-property/node_modules/is-data-descriptor": { 1484 | "version": "1.0.0", 1485 | "dev": true, 1486 | "inBundle": true, 1487 | "license": "MIT", 1488 | "dependencies": { 1489 | "kind-of": "^6.0.0" 1490 | }, 1491 | "engines": { 1492 | "node": ">=0.10.0" 1493 | } 1494 | }, 1495 | "node_modules/nyc/node_modules/define-property/node_modules/is-descriptor": { 1496 | "version": "1.0.2", 1497 | "dev": true, 1498 | "inBundle": true, 1499 | "license": "MIT", 1500 | "dependencies": { 1501 | "is-accessor-descriptor": "^1.0.0", 1502 | "is-data-descriptor": "^1.0.0", 1503 | "kind-of": "^6.0.2" 1504 | }, 1505 | "engines": { 1506 | "node": ">=0.10.0" 1507 | } 1508 | }, 1509 | "node_modules/nyc/node_modules/define-property/node_modules/isobject": { 1510 | "version": "3.0.1", 1511 | "dev": true, 1512 | "inBundle": true, 1513 | "license": "MIT", 1514 | "engines": { 1515 | "node": ">=0.10.0" 1516 | } 1517 | }, 1518 | "node_modules/nyc/node_modules/define-property/node_modules/kind-of": { 1519 | "version": "6.0.2", 1520 | "dev": true, 1521 | "inBundle": true, 1522 | "license": "MIT", 1523 | "engines": { 1524 | "node": ">=0.10.0" 1525 | } 1526 | }, 1527 | "node_modules/nyc/node_modules/detect-indent": { 1528 | "version": "4.0.0", 1529 | "dev": true, 1530 | "inBundle": true, 1531 | "license": "MIT", 1532 | "dependencies": { 1533 | "repeating": "^2.0.0" 1534 | }, 1535 | "engines": { 1536 | "node": ">=0.10.0" 1537 | } 1538 | }, 1539 | "node_modules/nyc/node_modules/error-ex": { 1540 | "version": "1.3.1", 1541 | "dev": true, 1542 | "inBundle": true, 1543 | "license": "MIT", 1544 | "dependencies": { 1545 | "is-arrayish": "^0.2.1" 1546 | } 1547 | }, 1548 | "node_modules/nyc/node_modules/escape-string-regexp": { 1549 | "version": "1.0.5", 1550 | "dev": true, 1551 | "inBundle": true, 1552 | "license": "MIT", 1553 | "engines": { 1554 | "node": ">=0.8.0" 1555 | } 1556 | }, 1557 | "node_modules/nyc/node_modules/esutils": { 1558 | "version": "2.0.2", 1559 | "dev": true, 1560 | "inBundle": true, 1561 | "engines": { 1562 | "node": ">=0.10.0" 1563 | } 1564 | }, 1565 | "node_modules/nyc/node_modules/execa": { 1566 | "version": "0.7.0", 1567 | "dev": true, 1568 | "inBundle": true, 1569 | "license": "MIT", 1570 | "dependencies": { 1571 | "cross-spawn": "^5.0.1", 1572 | "get-stream": "^3.0.0", 1573 | "is-stream": "^1.1.0", 1574 | "npm-run-path": "^2.0.0", 1575 | "p-finally": "^1.0.0", 1576 | "signal-exit": "^3.0.0", 1577 | "strip-eof": "^1.0.0" 1578 | }, 1579 | "engines": { 1580 | "node": ">=4" 1581 | } 1582 | }, 1583 | "node_modules/nyc/node_modules/execa/node_modules/cross-spawn": { 1584 | "version": "5.1.0", 1585 | "dev": true, 1586 | "inBundle": true, 1587 | "license": "MIT", 1588 | "dependencies": { 1589 | "lru-cache": "^4.0.1", 1590 | "shebang-command": "^1.2.0", 1591 | "which": "^1.2.9" 1592 | } 1593 | }, 1594 | "node_modules/nyc/node_modules/expand-brackets": { 1595 | "version": "2.1.4", 1596 | "dev": true, 1597 | "inBundle": true, 1598 | "license": "MIT", 1599 | "dependencies": { 1600 | "debug": "^2.3.3", 1601 | "define-property": "^0.2.5", 1602 | "extend-shallow": "^2.0.1", 1603 | "posix-character-classes": "^0.1.0", 1604 | "regex-not": "^1.0.0", 1605 | "snapdragon": "^0.8.1", 1606 | "to-regex": "^3.0.1" 1607 | }, 1608 | "engines": { 1609 | "node": ">=0.10.0" 1610 | } 1611 | }, 1612 | "node_modules/nyc/node_modules/expand-brackets/node_modules/define-property": { 1613 | "version": "0.2.5", 1614 | "dev": true, 1615 | "inBundle": true, 1616 | "license": "MIT", 1617 | "dependencies": { 1618 | "is-descriptor": "^0.1.0" 1619 | }, 1620 | "engines": { 1621 | "node": ">=0.10.0" 1622 | } 1623 | }, 1624 | "node_modules/nyc/node_modules/expand-brackets/node_modules/extend-shallow": { 1625 | "version": "2.0.1", 1626 | "dev": true, 1627 | "inBundle": true, 1628 | "license": "MIT", 1629 | "dependencies": { 1630 | "is-extendable": "^0.1.0" 1631 | }, 1632 | "engines": { 1633 | "node": ">=0.10.0" 1634 | } 1635 | }, 1636 | "node_modules/nyc/node_modules/extend-shallow": { 1637 | "version": "3.0.2", 1638 | "dev": true, 1639 | "inBundle": true, 1640 | "license": "MIT", 1641 | "dependencies": { 1642 | "assign-symbols": "^1.0.0", 1643 | "is-extendable": "^1.0.1" 1644 | }, 1645 | "engines": { 1646 | "node": ">=0.10.0" 1647 | } 1648 | }, 1649 | "node_modules/nyc/node_modules/extend-shallow/node_modules/is-extendable": { 1650 | "version": "1.0.1", 1651 | "dev": true, 1652 | "inBundle": true, 1653 | "license": "MIT", 1654 | "dependencies": { 1655 | "is-plain-object": "^2.0.4" 1656 | }, 1657 | "engines": { 1658 | "node": ">=0.10.0" 1659 | } 1660 | }, 1661 | "node_modules/nyc/node_modules/extglob": { 1662 | "version": "2.0.4", 1663 | "dev": true, 1664 | "inBundle": true, 1665 | "license": "MIT", 1666 | "dependencies": { 1667 | "array-unique": "^0.3.2", 1668 | "define-property": "^1.0.0", 1669 | "expand-brackets": "^2.1.4", 1670 | "extend-shallow": "^2.0.1", 1671 | "fragment-cache": "^0.2.1", 1672 | "regex-not": "^1.0.0", 1673 | "snapdragon": "^0.8.1", 1674 | "to-regex": "^3.0.1" 1675 | }, 1676 | "engines": { 1677 | "node": ">=0.10.0" 1678 | } 1679 | }, 1680 | "node_modules/nyc/node_modules/extglob/node_modules/define-property": { 1681 | "version": "1.0.0", 1682 | "dev": true, 1683 | "inBundle": true, 1684 | "license": "MIT", 1685 | "dependencies": { 1686 | "is-descriptor": "^1.0.0" 1687 | }, 1688 | "engines": { 1689 | "node": ">=0.10.0" 1690 | } 1691 | }, 1692 | "node_modules/nyc/node_modules/extglob/node_modules/extend-shallow": { 1693 | "version": "2.0.1", 1694 | "dev": true, 1695 | "inBundle": true, 1696 | "license": "MIT", 1697 | "dependencies": { 1698 | "is-extendable": "^0.1.0" 1699 | }, 1700 | "engines": { 1701 | "node": ">=0.10.0" 1702 | } 1703 | }, 1704 | "node_modules/nyc/node_modules/extglob/node_modules/is-accessor-descriptor": { 1705 | "version": "1.0.0", 1706 | "dev": true, 1707 | "inBundle": true, 1708 | "license": "MIT", 1709 | "dependencies": { 1710 | "kind-of": "^6.0.0" 1711 | }, 1712 | "engines": { 1713 | "node": ">=0.10.0" 1714 | } 1715 | }, 1716 | "node_modules/nyc/node_modules/extglob/node_modules/is-data-descriptor": { 1717 | "version": "1.0.0", 1718 | "dev": true, 1719 | "inBundle": true, 1720 | "license": "MIT", 1721 | "dependencies": { 1722 | "kind-of": "^6.0.0" 1723 | }, 1724 | "engines": { 1725 | "node": ">=0.10.0" 1726 | } 1727 | }, 1728 | "node_modules/nyc/node_modules/extglob/node_modules/is-descriptor": { 1729 | "version": "1.0.2", 1730 | "dev": true, 1731 | "inBundle": true, 1732 | "license": "MIT", 1733 | "dependencies": { 1734 | "is-accessor-descriptor": "^1.0.0", 1735 | "is-data-descriptor": "^1.0.0", 1736 | "kind-of": "^6.0.2" 1737 | }, 1738 | "engines": { 1739 | "node": ">=0.10.0" 1740 | } 1741 | }, 1742 | "node_modules/nyc/node_modules/extglob/node_modules/kind-of": { 1743 | "version": "6.0.2", 1744 | "dev": true, 1745 | "inBundle": true, 1746 | "license": "MIT", 1747 | "engines": { 1748 | "node": ">=0.10.0" 1749 | } 1750 | }, 1751 | "node_modules/nyc/node_modules/fill-range": { 1752 | "version": "4.0.0", 1753 | "dev": true, 1754 | "inBundle": true, 1755 | "license": "MIT", 1756 | "dependencies": { 1757 | "extend-shallow": "^2.0.1", 1758 | "is-number": "^3.0.0", 1759 | "repeat-string": "^1.6.1", 1760 | "to-regex-range": "^2.1.0" 1761 | }, 1762 | "engines": { 1763 | "node": ">=0.10.0" 1764 | } 1765 | }, 1766 | "node_modules/nyc/node_modules/fill-range/node_modules/extend-shallow": { 1767 | "version": "2.0.1", 1768 | "dev": true, 1769 | "inBundle": true, 1770 | "license": "MIT", 1771 | "dependencies": { 1772 | "is-extendable": "^0.1.0" 1773 | }, 1774 | "engines": { 1775 | "node": ">=0.10.0" 1776 | } 1777 | }, 1778 | "node_modules/nyc/node_modules/find-cache-dir": { 1779 | "version": "0.1.1", 1780 | "dev": true, 1781 | "inBundle": true, 1782 | "license": "MIT", 1783 | "dependencies": { 1784 | "commondir": "^1.0.1", 1785 | "mkdirp": "^0.5.1", 1786 | "pkg-dir": "^1.0.0" 1787 | }, 1788 | "engines": { 1789 | "node": ">=0.10.0" 1790 | } 1791 | }, 1792 | "node_modules/nyc/node_modules/find-up": { 1793 | "version": "2.1.0", 1794 | "dev": true, 1795 | "inBundle": true, 1796 | "license": "MIT", 1797 | "dependencies": { 1798 | "locate-path": "^2.0.0" 1799 | }, 1800 | "engines": { 1801 | "node": ">=4" 1802 | } 1803 | }, 1804 | "node_modules/nyc/node_modules/for-in": { 1805 | "version": "1.0.2", 1806 | "dev": true, 1807 | "inBundle": true, 1808 | "license": "MIT", 1809 | "engines": { 1810 | "node": ">=0.10.0" 1811 | } 1812 | }, 1813 | "node_modules/nyc/node_modules/foreground-child": { 1814 | "version": "1.5.6", 1815 | "dev": true, 1816 | "inBundle": true, 1817 | "license": "ISC", 1818 | "dependencies": { 1819 | "cross-spawn": "^4", 1820 | "signal-exit": "^3.0.0" 1821 | } 1822 | }, 1823 | "node_modules/nyc/node_modules/fragment-cache": { 1824 | "version": "0.2.1", 1825 | "dev": true, 1826 | "inBundle": true, 1827 | "license": "MIT", 1828 | "dependencies": { 1829 | "map-cache": "^0.2.2" 1830 | }, 1831 | "engines": { 1832 | "node": ">=0.10.0" 1833 | } 1834 | }, 1835 | "node_modules/nyc/node_modules/fs.realpath": { 1836 | "version": "1.0.0", 1837 | "dev": true, 1838 | "inBundle": true, 1839 | "license": "ISC" 1840 | }, 1841 | "node_modules/nyc/node_modules/get-caller-file": { 1842 | "version": "1.0.2", 1843 | "dev": true, 1844 | "inBundle": true, 1845 | "license": "ISC" 1846 | }, 1847 | "node_modules/nyc/node_modules/get-stream": { 1848 | "version": "3.0.0", 1849 | "dev": true, 1850 | "inBundle": true, 1851 | "license": "MIT", 1852 | "engines": { 1853 | "node": ">=4" 1854 | } 1855 | }, 1856 | "node_modules/nyc/node_modules/get-value": { 1857 | "version": "2.0.6", 1858 | "dev": true, 1859 | "inBundle": true, 1860 | "license": "MIT", 1861 | "engines": { 1862 | "node": ">=0.10.0" 1863 | } 1864 | }, 1865 | "node_modules/nyc/node_modules/glob": { 1866 | "version": "7.1.2", 1867 | "dev": true, 1868 | "inBundle": true, 1869 | "license": "ISC", 1870 | "dependencies": { 1871 | "fs.realpath": "^1.0.0", 1872 | "inflight": "^1.0.4", 1873 | "inherits": "2", 1874 | "minimatch": "^3.0.4", 1875 | "once": "^1.3.0", 1876 | "path-is-absolute": "^1.0.0" 1877 | }, 1878 | "engines": { 1879 | "node": "*" 1880 | } 1881 | }, 1882 | "node_modules/nyc/node_modules/globals": { 1883 | "version": "9.18.0", 1884 | "dev": true, 1885 | "inBundle": true, 1886 | "license": "MIT", 1887 | "engines": { 1888 | "node": ">=0.10.0" 1889 | } 1890 | }, 1891 | "node_modules/nyc/node_modules/graceful-fs": { 1892 | "version": "4.1.11", 1893 | "dev": true, 1894 | "inBundle": true, 1895 | "license": "ISC", 1896 | "engines": { 1897 | "node": ">=0.4.0" 1898 | } 1899 | }, 1900 | "node_modules/nyc/node_modules/handlebars": { 1901 | "version": "4.0.11", 1902 | "dev": true, 1903 | "inBundle": true, 1904 | "license": "MIT", 1905 | "dependencies": { 1906 | "async": "^1.4.0", 1907 | "optimist": "^0.6.1", 1908 | "source-map": "^0.4.4" 1909 | }, 1910 | "bin": { 1911 | "handlebars": "bin/handlebars" 1912 | }, 1913 | "engines": { 1914 | "node": ">=0.4.7" 1915 | }, 1916 | "optionalDependencies": { 1917 | "uglify-js": "^2.6" 1918 | } 1919 | }, 1920 | "node_modules/nyc/node_modules/handlebars/node_modules/source-map": { 1921 | "version": "0.4.4", 1922 | "dev": true, 1923 | "inBundle": true, 1924 | "license": "BSD-3-Clause", 1925 | "dependencies": { 1926 | "amdefine": ">=0.0.4" 1927 | }, 1928 | "engines": { 1929 | "node": ">=0.8.0" 1930 | } 1931 | }, 1932 | "node_modules/nyc/node_modules/has-ansi": { 1933 | "version": "2.0.0", 1934 | "dev": true, 1935 | "inBundle": true, 1936 | "license": "MIT", 1937 | "dependencies": { 1938 | "ansi-regex": "^2.0.0" 1939 | }, 1940 | "engines": { 1941 | "node": ">=0.10.0" 1942 | } 1943 | }, 1944 | "node_modules/nyc/node_modules/has-flag": { 1945 | "version": "1.0.0", 1946 | "dev": true, 1947 | "inBundle": true, 1948 | "license": "MIT", 1949 | "engines": { 1950 | "node": ">=0.10.0" 1951 | } 1952 | }, 1953 | "node_modules/nyc/node_modules/has-value": { 1954 | "version": "1.0.0", 1955 | "dev": true, 1956 | "inBundle": true, 1957 | "license": "MIT", 1958 | "dependencies": { 1959 | "get-value": "^2.0.6", 1960 | "has-values": "^1.0.0", 1961 | "isobject": "^3.0.0" 1962 | }, 1963 | "engines": { 1964 | "node": ">=0.10.0" 1965 | } 1966 | }, 1967 | "node_modules/nyc/node_modules/has-value/node_modules/isobject": { 1968 | "version": "3.0.1", 1969 | "dev": true, 1970 | "inBundle": true, 1971 | "license": "MIT", 1972 | "engines": { 1973 | "node": ">=0.10.0" 1974 | } 1975 | }, 1976 | "node_modules/nyc/node_modules/has-values": { 1977 | "version": "1.0.0", 1978 | "dev": true, 1979 | "inBundle": true, 1980 | "license": "MIT", 1981 | "dependencies": { 1982 | "is-number": "^3.0.0", 1983 | "kind-of": "^4.0.0" 1984 | }, 1985 | "engines": { 1986 | "node": ">=0.10.0" 1987 | } 1988 | }, 1989 | "node_modules/nyc/node_modules/has-values/node_modules/is-number": { 1990 | "version": "3.0.0", 1991 | "dev": true, 1992 | "inBundle": true, 1993 | "license": "MIT", 1994 | "dependencies": { 1995 | "kind-of": "^3.0.2" 1996 | }, 1997 | "engines": { 1998 | "node": ">=0.10.0" 1999 | } 2000 | }, 2001 | "node_modules/nyc/node_modules/has-values/node_modules/is-number/node_modules/kind-of": { 2002 | "version": "3.2.2", 2003 | "dev": true, 2004 | "inBundle": true, 2005 | "license": "MIT", 2006 | "dependencies": { 2007 | "is-buffer": "^1.1.5" 2008 | }, 2009 | "engines": { 2010 | "node": ">=0.10.0" 2011 | } 2012 | }, 2013 | "node_modules/nyc/node_modules/has-values/node_modules/kind-of": { 2014 | "version": "4.0.0", 2015 | "dev": true, 2016 | "inBundle": true, 2017 | "license": "MIT", 2018 | "dependencies": { 2019 | "is-buffer": "^1.1.5" 2020 | }, 2021 | "engines": { 2022 | "node": ">=0.10.0" 2023 | } 2024 | }, 2025 | "node_modules/nyc/node_modules/hosted-git-info": { 2026 | "version": "2.6.0", 2027 | "dev": true, 2028 | "inBundle": true, 2029 | "license": "ISC", 2030 | "engines": { 2031 | "node": ">=4" 2032 | } 2033 | }, 2034 | "node_modules/nyc/node_modules/imurmurhash": { 2035 | "version": "0.1.4", 2036 | "dev": true, 2037 | "inBundle": true, 2038 | "license": "MIT", 2039 | "engines": { 2040 | "node": ">=0.8.19" 2041 | } 2042 | }, 2043 | "node_modules/nyc/node_modules/inflight": { 2044 | "version": "1.0.6", 2045 | "dev": true, 2046 | "inBundle": true, 2047 | "license": "ISC", 2048 | "dependencies": { 2049 | "once": "^1.3.0", 2050 | "wrappy": "1" 2051 | } 2052 | }, 2053 | "node_modules/nyc/node_modules/inherits": { 2054 | "version": "2.0.3", 2055 | "dev": true, 2056 | "inBundle": true, 2057 | "license": "ISC" 2058 | }, 2059 | "node_modules/nyc/node_modules/invariant": { 2060 | "version": "2.2.4", 2061 | "dev": true, 2062 | "inBundle": true, 2063 | "license": "MIT", 2064 | "dependencies": { 2065 | "loose-envify": "^1.0.0" 2066 | } 2067 | }, 2068 | "node_modules/nyc/node_modules/invert-kv": { 2069 | "version": "1.0.0", 2070 | "dev": true, 2071 | "inBundle": true, 2072 | "license": "MIT", 2073 | "engines": { 2074 | "node": ">=0.10.0" 2075 | } 2076 | }, 2077 | "node_modules/nyc/node_modules/is-accessor-descriptor": { 2078 | "version": "0.1.6", 2079 | "dev": true, 2080 | "inBundle": true, 2081 | "license": "MIT", 2082 | "dependencies": { 2083 | "kind-of": "^3.0.2" 2084 | }, 2085 | "engines": { 2086 | "node": ">=0.10.0" 2087 | } 2088 | }, 2089 | "node_modules/nyc/node_modules/is-arrayish": { 2090 | "version": "0.2.1", 2091 | "dev": true, 2092 | "inBundle": true, 2093 | "license": "MIT" 2094 | }, 2095 | "node_modules/nyc/node_modules/is-buffer": { 2096 | "version": "1.1.6", 2097 | "dev": true, 2098 | "inBundle": true, 2099 | "license": "MIT" 2100 | }, 2101 | "node_modules/nyc/node_modules/is-builtin-module": { 2102 | "version": "1.0.0", 2103 | "dev": true, 2104 | "inBundle": true, 2105 | "license": "MIT", 2106 | "dependencies": { 2107 | "builtin-modules": "^1.0.0" 2108 | }, 2109 | "engines": { 2110 | "node": ">=0.10.0" 2111 | } 2112 | }, 2113 | "node_modules/nyc/node_modules/is-data-descriptor": { 2114 | "version": "0.1.4", 2115 | "dev": true, 2116 | "inBundle": true, 2117 | "license": "MIT", 2118 | "dependencies": { 2119 | "kind-of": "^3.0.2" 2120 | }, 2121 | "engines": { 2122 | "node": ">=0.10.0" 2123 | } 2124 | }, 2125 | "node_modules/nyc/node_modules/is-descriptor": { 2126 | "version": "0.1.6", 2127 | "dev": true, 2128 | "inBundle": true, 2129 | "license": "MIT", 2130 | "dependencies": { 2131 | "is-accessor-descriptor": "^0.1.6", 2132 | "is-data-descriptor": "^0.1.4", 2133 | "kind-of": "^5.0.0" 2134 | }, 2135 | "engines": { 2136 | "node": ">=0.10.0" 2137 | } 2138 | }, 2139 | "node_modules/nyc/node_modules/is-descriptor/node_modules/kind-of": { 2140 | "version": "5.1.0", 2141 | "dev": true, 2142 | "inBundle": true, 2143 | "license": "MIT", 2144 | "engines": { 2145 | "node": ">=0.10.0" 2146 | } 2147 | }, 2148 | "node_modules/nyc/node_modules/is-extendable": { 2149 | "version": "0.1.1", 2150 | "dev": true, 2151 | "inBundle": true, 2152 | "license": "MIT", 2153 | "engines": { 2154 | "node": ">=0.10.0" 2155 | } 2156 | }, 2157 | "node_modules/nyc/node_modules/is-finite": { 2158 | "version": "1.0.2", 2159 | "dev": true, 2160 | "inBundle": true, 2161 | "license": "MIT", 2162 | "dependencies": { 2163 | "number-is-nan": "^1.0.0" 2164 | }, 2165 | "engines": { 2166 | "node": ">=0.10.0" 2167 | } 2168 | }, 2169 | "node_modules/nyc/node_modules/is-fullwidth-code-point": { 2170 | "version": "2.0.0", 2171 | "dev": true, 2172 | "inBundle": true, 2173 | "license": "MIT", 2174 | "engines": { 2175 | "node": ">=4" 2176 | } 2177 | }, 2178 | "node_modules/nyc/node_modules/is-number": { 2179 | "version": "3.0.0", 2180 | "dev": true, 2181 | "inBundle": true, 2182 | "license": "MIT", 2183 | "dependencies": { 2184 | "kind-of": "^3.0.2" 2185 | }, 2186 | "engines": { 2187 | "node": ">=0.10.0" 2188 | } 2189 | }, 2190 | "node_modules/nyc/node_modules/is-odd": { 2191 | "version": "2.0.0", 2192 | "dev": true, 2193 | "inBundle": true, 2194 | "license": "MIT", 2195 | "dependencies": { 2196 | "is-number": "^4.0.0" 2197 | }, 2198 | "engines": { 2199 | "node": ">=0.10.0" 2200 | } 2201 | }, 2202 | "node_modules/nyc/node_modules/is-odd/node_modules/is-number": { 2203 | "version": "4.0.0", 2204 | "dev": true, 2205 | "inBundle": true, 2206 | "license": "MIT", 2207 | "engines": { 2208 | "node": ">=0.10.0" 2209 | } 2210 | }, 2211 | "node_modules/nyc/node_modules/is-plain-object": { 2212 | "version": "2.0.4", 2213 | "dev": true, 2214 | "inBundle": true, 2215 | "license": "MIT", 2216 | "dependencies": { 2217 | "isobject": "^3.0.1" 2218 | }, 2219 | "engines": { 2220 | "node": ">=0.10.0" 2221 | } 2222 | }, 2223 | "node_modules/nyc/node_modules/is-plain-object/node_modules/isobject": { 2224 | "version": "3.0.1", 2225 | "dev": true, 2226 | "inBundle": true, 2227 | "license": "MIT", 2228 | "engines": { 2229 | "node": ">=0.10.0" 2230 | } 2231 | }, 2232 | "node_modules/nyc/node_modules/is-stream": { 2233 | "version": "1.1.0", 2234 | "dev": true, 2235 | "inBundle": true, 2236 | "license": "MIT", 2237 | "engines": { 2238 | "node": ">=0.10.0" 2239 | } 2240 | }, 2241 | "node_modules/nyc/node_modules/is-utf8": { 2242 | "version": "0.2.1", 2243 | "dev": true, 2244 | "inBundle": true, 2245 | "license": "MIT" 2246 | }, 2247 | "node_modules/nyc/node_modules/is-windows": { 2248 | "version": "1.0.2", 2249 | "dev": true, 2250 | "inBundle": true, 2251 | "license": "MIT", 2252 | "engines": { 2253 | "node": ">=0.10.0" 2254 | } 2255 | }, 2256 | "node_modules/nyc/node_modules/isarray": { 2257 | "version": "1.0.0", 2258 | "dev": true, 2259 | "inBundle": true, 2260 | "license": "MIT" 2261 | }, 2262 | "node_modules/nyc/node_modules/isexe": { 2263 | "version": "2.0.0", 2264 | "dev": true, 2265 | "inBundle": true, 2266 | "license": "ISC" 2267 | }, 2268 | "node_modules/nyc/node_modules/isobject": { 2269 | "version": "3.0.1", 2270 | "dev": true, 2271 | "inBundle": true, 2272 | "license": "MIT", 2273 | "engines": { 2274 | "node": ">=0.10.0" 2275 | } 2276 | }, 2277 | "node_modules/nyc/node_modules/istanbul-lib-coverage": { 2278 | "version": "1.2.0", 2279 | "dev": true, 2280 | "inBundle": true, 2281 | "license": "BSD-3-Clause" 2282 | }, 2283 | "node_modules/nyc/node_modules/istanbul-lib-hook": { 2284 | "version": "1.1.0", 2285 | "dev": true, 2286 | "inBundle": true, 2287 | "license": "BSD-3-Clause", 2288 | "dependencies": { 2289 | "append-transform": "^0.4.0" 2290 | } 2291 | }, 2292 | "node_modules/nyc/node_modules/istanbul-lib-instrument": { 2293 | "version": "1.10.1", 2294 | "dev": true, 2295 | "inBundle": true, 2296 | "license": "BSD-3-Clause", 2297 | "dependencies": { 2298 | "babel-generator": "^6.18.0", 2299 | "babel-template": "^6.16.0", 2300 | "babel-traverse": "^6.18.0", 2301 | "babel-types": "^6.18.0", 2302 | "babylon": "^6.18.0", 2303 | "istanbul-lib-coverage": "^1.2.0", 2304 | "semver": "^5.3.0" 2305 | } 2306 | }, 2307 | "node_modules/nyc/node_modules/istanbul-lib-report": { 2308 | "version": "1.1.3", 2309 | "dev": true, 2310 | "inBundle": true, 2311 | "license": "BSD-3-Clause", 2312 | "dependencies": { 2313 | "istanbul-lib-coverage": "^1.1.2", 2314 | "mkdirp": "^0.5.1", 2315 | "path-parse": "^1.0.5", 2316 | "supports-color": "^3.1.2" 2317 | } 2318 | }, 2319 | "node_modules/nyc/node_modules/istanbul-lib-report/node_modules/supports-color": { 2320 | "version": "3.2.3", 2321 | "dev": true, 2322 | "inBundle": true, 2323 | "license": "MIT", 2324 | "dependencies": { 2325 | "has-flag": "^1.0.0" 2326 | }, 2327 | "engines": { 2328 | "node": ">=0.8.0" 2329 | } 2330 | }, 2331 | "node_modules/nyc/node_modules/istanbul-lib-source-maps": { 2332 | "version": "1.2.3", 2333 | "dev": true, 2334 | "inBundle": true, 2335 | "license": "BSD-3-Clause", 2336 | "dependencies": { 2337 | "debug": "^3.1.0", 2338 | "istanbul-lib-coverage": "^1.1.2", 2339 | "mkdirp": "^0.5.1", 2340 | "rimraf": "^2.6.1", 2341 | "source-map": "^0.5.3" 2342 | } 2343 | }, 2344 | "node_modules/nyc/node_modules/istanbul-lib-source-maps/node_modules/debug": { 2345 | "version": "3.1.0", 2346 | "dev": true, 2347 | "inBundle": true, 2348 | "license": "MIT", 2349 | "dependencies": { 2350 | "ms": "2.0.0" 2351 | } 2352 | }, 2353 | "node_modules/nyc/node_modules/istanbul-reports": { 2354 | "version": "1.4.0", 2355 | "dev": true, 2356 | "inBundle": true, 2357 | "license": "BSD-3-Clause", 2358 | "dependencies": { 2359 | "handlebars": "^4.0.3" 2360 | } 2361 | }, 2362 | "node_modules/nyc/node_modules/js-tokens": { 2363 | "version": "3.0.2", 2364 | "dev": true, 2365 | "inBundle": true, 2366 | "license": "MIT" 2367 | }, 2368 | "node_modules/nyc/node_modules/jsesc": { 2369 | "version": "1.3.0", 2370 | "dev": true, 2371 | "inBundle": true, 2372 | "license": "MIT", 2373 | "bin": { 2374 | "jsesc": "bin/jsesc" 2375 | } 2376 | }, 2377 | "node_modules/nyc/node_modules/kind-of": { 2378 | "version": "3.2.2", 2379 | "dev": true, 2380 | "inBundle": true, 2381 | "license": "MIT", 2382 | "dependencies": { 2383 | "is-buffer": "^1.1.5" 2384 | }, 2385 | "engines": { 2386 | "node": ">=0.10.0" 2387 | } 2388 | }, 2389 | "node_modules/nyc/node_modules/lazy-cache": { 2390 | "version": "1.0.4", 2391 | "dev": true, 2392 | "inBundle": true, 2393 | "license": "MIT", 2394 | "optional": true, 2395 | "engines": { 2396 | "node": ">=0.10.0" 2397 | } 2398 | }, 2399 | "node_modules/nyc/node_modules/lcid": { 2400 | "version": "1.0.0", 2401 | "dev": true, 2402 | "inBundle": true, 2403 | "license": "MIT", 2404 | "dependencies": { 2405 | "invert-kv": "^1.0.0" 2406 | }, 2407 | "engines": { 2408 | "node": ">=0.10.0" 2409 | } 2410 | }, 2411 | "node_modules/nyc/node_modules/load-json-file": { 2412 | "version": "1.1.0", 2413 | "dev": true, 2414 | "inBundle": true, 2415 | "license": "MIT", 2416 | "dependencies": { 2417 | "graceful-fs": "^4.1.2", 2418 | "parse-json": "^2.2.0", 2419 | "pify": "^2.0.0", 2420 | "pinkie-promise": "^2.0.0", 2421 | "strip-bom": "^2.0.0" 2422 | }, 2423 | "engines": { 2424 | "node": ">=0.10.0" 2425 | } 2426 | }, 2427 | "node_modules/nyc/node_modules/locate-path": { 2428 | "version": "2.0.0", 2429 | "dev": true, 2430 | "inBundle": true, 2431 | "license": "MIT", 2432 | "dependencies": { 2433 | "p-locate": "^2.0.0", 2434 | "path-exists": "^3.0.0" 2435 | }, 2436 | "engines": { 2437 | "node": ">=4" 2438 | } 2439 | }, 2440 | "node_modules/nyc/node_modules/locate-path/node_modules/path-exists": { 2441 | "version": "3.0.0", 2442 | "dev": true, 2443 | "inBundle": true, 2444 | "license": "MIT", 2445 | "engines": { 2446 | "node": ">=4" 2447 | } 2448 | }, 2449 | "node_modules/nyc/node_modules/lodash": { 2450 | "version": "4.17.10", 2451 | "dev": true, 2452 | "inBundle": true, 2453 | "license": "MIT" 2454 | }, 2455 | "node_modules/nyc/node_modules/longest": { 2456 | "version": "1.0.1", 2457 | "dev": true, 2458 | "inBundle": true, 2459 | "license": "MIT", 2460 | "optional": true, 2461 | "engines": { 2462 | "node": ">=0.10.0" 2463 | } 2464 | }, 2465 | "node_modules/nyc/node_modules/loose-envify": { 2466 | "version": "1.3.1", 2467 | "dev": true, 2468 | "inBundle": true, 2469 | "license": "MIT", 2470 | "dependencies": { 2471 | "js-tokens": "^3.0.0" 2472 | }, 2473 | "bin": { 2474 | "loose-envify": "cli.js" 2475 | } 2476 | }, 2477 | "node_modules/nyc/node_modules/lru-cache": { 2478 | "version": "4.1.3", 2479 | "dev": true, 2480 | "inBundle": true, 2481 | "license": "ISC", 2482 | "dependencies": { 2483 | "pseudomap": "^1.0.2", 2484 | "yallist": "^2.1.2" 2485 | } 2486 | }, 2487 | "node_modules/nyc/node_modules/map-cache": { 2488 | "version": "0.2.2", 2489 | "dev": true, 2490 | "inBundle": true, 2491 | "license": "MIT", 2492 | "engines": { 2493 | "node": ">=0.10.0" 2494 | } 2495 | }, 2496 | "node_modules/nyc/node_modules/map-visit": { 2497 | "version": "1.0.0", 2498 | "dev": true, 2499 | "inBundle": true, 2500 | "license": "MIT", 2501 | "dependencies": { 2502 | "object-visit": "^1.0.0" 2503 | }, 2504 | "engines": { 2505 | "node": ">=0.10.0" 2506 | } 2507 | }, 2508 | "node_modules/nyc/node_modules/md5-hex": { 2509 | "version": "1.3.0", 2510 | "dev": true, 2511 | "inBundle": true, 2512 | "license": "MIT", 2513 | "dependencies": { 2514 | "md5-o-matic": "^0.1.1" 2515 | }, 2516 | "engines": { 2517 | "node": ">=0.10.0" 2518 | } 2519 | }, 2520 | "node_modules/nyc/node_modules/md5-o-matic": { 2521 | "version": "0.1.1", 2522 | "dev": true, 2523 | "inBundle": true 2524 | }, 2525 | "node_modules/nyc/node_modules/mem": { 2526 | "version": "1.1.0", 2527 | "dev": true, 2528 | "inBundle": true, 2529 | "license": "MIT", 2530 | "dependencies": { 2531 | "mimic-fn": "^1.0.0" 2532 | }, 2533 | "engines": { 2534 | "node": ">=4" 2535 | } 2536 | }, 2537 | "node_modules/nyc/node_modules/merge-source-map": { 2538 | "version": "1.1.0", 2539 | "dev": true, 2540 | "inBundle": true, 2541 | "license": "MIT", 2542 | "dependencies": { 2543 | "source-map": "^0.6.1" 2544 | } 2545 | }, 2546 | "node_modules/nyc/node_modules/merge-source-map/node_modules/source-map": { 2547 | "version": "0.6.1", 2548 | "dev": true, 2549 | "inBundle": true, 2550 | "license": "BSD-3-Clause", 2551 | "engines": { 2552 | "node": ">=0.10.0" 2553 | } 2554 | }, 2555 | "node_modules/nyc/node_modules/micromatch": { 2556 | "version": "3.1.10", 2557 | "dev": true, 2558 | "inBundle": true, 2559 | "license": "MIT", 2560 | "dependencies": { 2561 | "arr-diff": "^4.0.0", 2562 | "array-unique": "^0.3.2", 2563 | "braces": "^2.3.1", 2564 | "define-property": "^2.0.2", 2565 | "extend-shallow": "^3.0.2", 2566 | "extglob": "^2.0.4", 2567 | "fragment-cache": "^0.2.1", 2568 | "kind-of": "^6.0.2", 2569 | "nanomatch": "^1.2.9", 2570 | "object.pick": "^1.3.0", 2571 | "regex-not": "^1.0.0", 2572 | "snapdragon": "^0.8.1", 2573 | "to-regex": "^3.0.2" 2574 | }, 2575 | "engines": { 2576 | "node": ">=0.10.0" 2577 | } 2578 | }, 2579 | "node_modules/nyc/node_modules/micromatch/node_modules/kind-of": { 2580 | "version": "6.0.2", 2581 | "dev": true, 2582 | "inBundle": true, 2583 | "license": "MIT", 2584 | "engines": { 2585 | "node": ">=0.10.0" 2586 | } 2587 | }, 2588 | "node_modules/nyc/node_modules/mimic-fn": { 2589 | "version": "1.2.0", 2590 | "dev": true, 2591 | "inBundle": true, 2592 | "license": "MIT", 2593 | "engines": { 2594 | "node": ">=4" 2595 | } 2596 | }, 2597 | "node_modules/nyc/node_modules/minimatch": { 2598 | "version": "3.0.4", 2599 | "dev": true, 2600 | "inBundle": true, 2601 | "license": "ISC", 2602 | "dependencies": { 2603 | "brace-expansion": "^1.1.7" 2604 | }, 2605 | "engines": { 2606 | "node": "*" 2607 | } 2608 | }, 2609 | "node_modules/nyc/node_modules/minimist": { 2610 | "version": "0.0.8", 2611 | "dev": true, 2612 | "inBundle": true, 2613 | "license": "MIT" 2614 | }, 2615 | "node_modules/nyc/node_modules/mixin-deep": { 2616 | "version": "1.3.1", 2617 | "dev": true, 2618 | "inBundle": true, 2619 | "license": "MIT", 2620 | "dependencies": { 2621 | "for-in": "^1.0.2", 2622 | "is-extendable": "^1.0.1" 2623 | }, 2624 | "engines": { 2625 | "node": ">=0.10.0" 2626 | } 2627 | }, 2628 | "node_modules/nyc/node_modules/mixin-deep/node_modules/is-extendable": { 2629 | "version": "1.0.1", 2630 | "dev": true, 2631 | "inBundle": true, 2632 | "license": "MIT", 2633 | "dependencies": { 2634 | "is-plain-object": "^2.0.4" 2635 | }, 2636 | "engines": { 2637 | "node": ">=0.10.0" 2638 | } 2639 | }, 2640 | "node_modules/nyc/node_modules/mkdirp": { 2641 | "version": "0.5.1", 2642 | "dev": true, 2643 | "inBundle": true, 2644 | "license": "MIT", 2645 | "dependencies": { 2646 | "minimist": "0.0.8" 2647 | }, 2648 | "bin": { 2649 | "mkdirp": "bin/cmd.js" 2650 | } 2651 | }, 2652 | "node_modules/nyc/node_modules/ms": { 2653 | "version": "2.0.0", 2654 | "dev": true, 2655 | "inBundle": true, 2656 | "license": "MIT" 2657 | }, 2658 | "node_modules/nyc/node_modules/nanomatch": { 2659 | "version": "1.2.9", 2660 | "dev": true, 2661 | "inBundle": true, 2662 | "license": "MIT", 2663 | "dependencies": { 2664 | "arr-diff": "^4.0.0", 2665 | "array-unique": "^0.3.2", 2666 | "define-property": "^2.0.2", 2667 | "extend-shallow": "^3.0.2", 2668 | "fragment-cache": "^0.2.1", 2669 | "is-odd": "^2.0.0", 2670 | "is-windows": "^1.0.2", 2671 | "kind-of": "^6.0.2", 2672 | "object.pick": "^1.3.0", 2673 | "regex-not": "^1.0.0", 2674 | "snapdragon": "^0.8.1", 2675 | "to-regex": "^3.0.1" 2676 | }, 2677 | "engines": { 2678 | "node": ">=0.10.0" 2679 | } 2680 | }, 2681 | "node_modules/nyc/node_modules/nanomatch/node_modules/arr-diff": { 2682 | "version": "4.0.0", 2683 | "dev": true, 2684 | "inBundle": true, 2685 | "license": "MIT", 2686 | "engines": { 2687 | "node": ">=0.10.0" 2688 | } 2689 | }, 2690 | "node_modules/nyc/node_modules/nanomatch/node_modules/array-unique": { 2691 | "version": "0.3.2", 2692 | "dev": true, 2693 | "inBundle": true, 2694 | "license": "MIT", 2695 | "engines": { 2696 | "node": ">=0.10.0" 2697 | } 2698 | }, 2699 | "node_modules/nyc/node_modules/nanomatch/node_modules/kind-of": { 2700 | "version": "6.0.2", 2701 | "dev": true, 2702 | "inBundle": true, 2703 | "license": "MIT", 2704 | "engines": { 2705 | "node": ">=0.10.0" 2706 | } 2707 | }, 2708 | "node_modules/nyc/node_modules/normalize-package-data": { 2709 | "version": "2.4.0", 2710 | "dev": true, 2711 | "inBundle": true, 2712 | "license": "BSD-2-Clause", 2713 | "dependencies": { 2714 | "hosted-git-info": "^2.1.4", 2715 | "is-builtin-module": "^1.0.0", 2716 | "semver": "2 || 3 || 4 || 5", 2717 | "validate-npm-package-license": "^3.0.1" 2718 | } 2719 | }, 2720 | "node_modules/nyc/node_modules/npm-run-path": { 2721 | "version": "2.0.2", 2722 | "dev": true, 2723 | "inBundle": true, 2724 | "license": "MIT", 2725 | "dependencies": { 2726 | "path-key": "^2.0.0" 2727 | }, 2728 | "engines": { 2729 | "node": ">=4" 2730 | } 2731 | }, 2732 | "node_modules/nyc/node_modules/number-is-nan": { 2733 | "version": "1.0.1", 2734 | "dev": true, 2735 | "inBundle": true, 2736 | "license": "MIT", 2737 | "engines": { 2738 | "node": ">=0.10.0" 2739 | } 2740 | }, 2741 | "node_modules/nyc/node_modules/object-assign": { 2742 | "version": "4.1.1", 2743 | "dev": true, 2744 | "inBundle": true, 2745 | "license": "MIT", 2746 | "engines": { 2747 | "node": ">=0.10.0" 2748 | } 2749 | }, 2750 | "node_modules/nyc/node_modules/object-copy": { 2751 | "version": "0.1.0", 2752 | "dev": true, 2753 | "inBundle": true, 2754 | "license": "MIT", 2755 | "dependencies": { 2756 | "copy-descriptor": "^0.1.0", 2757 | "define-property": "^0.2.5", 2758 | "kind-of": "^3.0.3" 2759 | }, 2760 | "engines": { 2761 | "node": ">=0.10.0" 2762 | } 2763 | }, 2764 | "node_modules/nyc/node_modules/object-copy/node_modules/define-property": { 2765 | "version": "0.2.5", 2766 | "dev": true, 2767 | "inBundle": true, 2768 | "license": "MIT", 2769 | "dependencies": { 2770 | "is-descriptor": "^0.1.0" 2771 | }, 2772 | "engines": { 2773 | "node": ">=0.10.0" 2774 | } 2775 | }, 2776 | "node_modules/nyc/node_modules/object-visit": { 2777 | "version": "1.0.1", 2778 | "dev": true, 2779 | "inBundle": true, 2780 | "license": "MIT", 2781 | "dependencies": { 2782 | "isobject": "^3.0.0" 2783 | }, 2784 | "engines": { 2785 | "node": ">=0.10.0" 2786 | } 2787 | }, 2788 | "node_modules/nyc/node_modules/object-visit/node_modules/isobject": { 2789 | "version": "3.0.1", 2790 | "dev": true, 2791 | "inBundle": true, 2792 | "license": "MIT", 2793 | "engines": { 2794 | "node": ">=0.10.0" 2795 | } 2796 | }, 2797 | "node_modules/nyc/node_modules/object.pick": { 2798 | "version": "1.3.0", 2799 | "dev": true, 2800 | "inBundle": true, 2801 | "license": "MIT", 2802 | "dependencies": { 2803 | "isobject": "^3.0.1" 2804 | }, 2805 | "engines": { 2806 | "node": ">=0.10.0" 2807 | } 2808 | }, 2809 | "node_modules/nyc/node_modules/object.pick/node_modules/isobject": { 2810 | "version": "3.0.1", 2811 | "dev": true, 2812 | "inBundle": true, 2813 | "license": "MIT", 2814 | "engines": { 2815 | "node": ">=0.10.0" 2816 | } 2817 | }, 2818 | "node_modules/nyc/node_modules/once": { 2819 | "version": "1.4.0", 2820 | "dev": true, 2821 | "inBundle": true, 2822 | "license": "ISC", 2823 | "dependencies": { 2824 | "wrappy": "1" 2825 | } 2826 | }, 2827 | "node_modules/nyc/node_modules/optimist": { 2828 | "version": "0.6.1", 2829 | "dev": true, 2830 | "inBundle": true, 2831 | "license": "MIT/X11", 2832 | "dependencies": { 2833 | "minimist": "~0.0.1", 2834 | "wordwrap": "~0.0.2" 2835 | } 2836 | }, 2837 | "node_modules/nyc/node_modules/os-homedir": { 2838 | "version": "1.0.2", 2839 | "dev": true, 2840 | "inBundle": true, 2841 | "license": "MIT", 2842 | "engines": { 2843 | "node": ">=0.10.0" 2844 | } 2845 | }, 2846 | "node_modules/nyc/node_modules/os-locale": { 2847 | "version": "2.1.0", 2848 | "dev": true, 2849 | "inBundle": true, 2850 | "license": "MIT", 2851 | "dependencies": { 2852 | "execa": "^0.7.0", 2853 | "lcid": "^1.0.0", 2854 | "mem": "^1.1.0" 2855 | }, 2856 | "engines": { 2857 | "node": ">=4" 2858 | } 2859 | }, 2860 | "node_modules/nyc/node_modules/p-finally": { 2861 | "version": "1.0.0", 2862 | "dev": true, 2863 | "inBundle": true, 2864 | "license": "MIT", 2865 | "engines": { 2866 | "node": ">=4" 2867 | } 2868 | }, 2869 | "node_modules/nyc/node_modules/p-limit": { 2870 | "version": "1.2.0", 2871 | "dev": true, 2872 | "inBundle": true, 2873 | "license": "MIT", 2874 | "dependencies": { 2875 | "p-try": "^1.0.0" 2876 | }, 2877 | "engines": { 2878 | "node": ">=4" 2879 | } 2880 | }, 2881 | "node_modules/nyc/node_modules/p-locate": { 2882 | "version": "2.0.0", 2883 | "dev": true, 2884 | "inBundle": true, 2885 | "license": "MIT", 2886 | "dependencies": { 2887 | "p-limit": "^1.1.0" 2888 | }, 2889 | "engines": { 2890 | "node": ">=4" 2891 | } 2892 | }, 2893 | "node_modules/nyc/node_modules/p-try": { 2894 | "version": "1.0.0", 2895 | "dev": true, 2896 | "inBundle": true, 2897 | "license": "MIT", 2898 | "engines": { 2899 | "node": ">=4" 2900 | } 2901 | }, 2902 | "node_modules/nyc/node_modules/parse-json": { 2903 | "version": "2.2.0", 2904 | "dev": true, 2905 | "inBundle": true, 2906 | "license": "MIT", 2907 | "dependencies": { 2908 | "error-ex": "^1.2.0" 2909 | }, 2910 | "engines": { 2911 | "node": ">=0.10.0" 2912 | } 2913 | }, 2914 | "node_modules/nyc/node_modules/pascalcase": { 2915 | "version": "0.1.1", 2916 | "dev": true, 2917 | "inBundle": true, 2918 | "license": "MIT", 2919 | "engines": { 2920 | "node": ">=0.10.0" 2921 | } 2922 | }, 2923 | "node_modules/nyc/node_modules/path-exists": { 2924 | "version": "2.1.0", 2925 | "dev": true, 2926 | "inBundle": true, 2927 | "license": "MIT", 2928 | "dependencies": { 2929 | "pinkie-promise": "^2.0.0" 2930 | }, 2931 | "engines": { 2932 | "node": ">=0.10.0" 2933 | } 2934 | }, 2935 | "node_modules/nyc/node_modules/path-is-absolute": { 2936 | "version": "1.0.1", 2937 | "dev": true, 2938 | "inBundle": true, 2939 | "license": "MIT", 2940 | "engines": { 2941 | "node": ">=0.10.0" 2942 | } 2943 | }, 2944 | "node_modules/nyc/node_modules/path-key": { 2945 | "version": "2.0.1", 2946 | "dev": true, 2947 | "inBundle": true, 2948 | "license": "MIT", 2949 | "engines": { 2950 | "node": ">=4" 2951 | } 2952 | }, 2953 | "node_modules/nyc/node_modules/path-parse": { 2954 | "version": "1.0.5", 2955 | "dev": true, 2956 | "inBundle": true, 2957 | "license": "MIT" 2958 | }, 2959 | "node_modules/nyc/node_modules/path-type": { 2960 | "version": "1.1.0", 2961 | "dev": true, 2962 | "inBundle": true, 2963 | "license": "MIT", 2964 | "dependencies": { 2965 | "graceful-fs": "^4.1.2", 2966 | "pify": "^2.0.0", 2967 | "pinkie-promise": "^2.0.0" 2968 | }, 2969 | "engines": { 2970 | "node": ">=0.10.0" 2971 | } 2972 | }, 2973 | "node_modules/nyc/node_modules/pify": { 2974 | "version": "2.3.0", 2975 | "dev": true, 2976 | "inBundle": true, 2977 | "license": "MIT", 2978 | "engines": { 2979 | "node": ">=0.10.0" 2980 | } 2981 | }, 2982 | "node_modules/nyc/node_modules/pinkie": { 2983 | "version": "2.0.4", 2984 | "dev": true, 2985 | "inBundle": true, 2986 | "license": "MIT", 2987 | "engines": { 2988 | "node": ">=0.10.0" 2989 | } 2990 | }, 2991 | "node_modules/nyc/node_modules/pinkie-promise": { 2992 | "version": "2.0.1", 2993 | "dev": true, 2994 | "inBundle": true, 2995 | "license": "MIT", 2996 | "dependencies": { 2997 | "pinkie": "^2.0.0" 2998 | }, 2999 | "engines": { 3000 | "node": ">=0.10.0" 3001 | } 3002 | }, 3003 | "node_modules/nyc/node_modules/pkg-dir": { 3004 | "version": "1.0.0", 3005 | "dev": true, 3006 | "inBundle": true, 3007 | "license": "MIT", 3008 | "dependencies": { 3009 | "find-up": "^1.0.0" 3010 | }, 3011 | "engines": { 3012 | "node": ">=0.10.0" 3013 | } 3014 | }, 3015 | "node_modules/nyc/node_modules/pkg-dir/node_modules/find-up": { 3016 | "version": "1.1.2", 3017 | "dev": true, 3018 | "inBundle": true, 3019 | "license": "MIT", 3020 | "dependencies": { 3021 | "path-exists": "^2.0.0", 3022 | "pinkie-promise": "^2.0.0" 3023 | }, 3024 | "engines": { 3025 | "node": ">=0.10.0" 3026 | } 3027 | }, 3028 | "node_modules/nyc/node_modules/posix-character-classes": { 3029 | "version": "0.1.1", 3030 | "dev": true, 3031 | "inBundle": true, 3032 | "license": "MIT", 3033 | "engines": { 3034 | "node": ">=0.10.0" 3035 | } 3036 | }, 3037 | "node_modules/nyc/node_modules/pseudomap": { 3038 | "version": "1.0.2", 3039 | "dev": true, 3040 | "inBundle": true, 3041 | "license": "ISC" 3042 | }, 3043 | "node_modules/nyc/node_modules/read-pkg": { 3044 | "version": "1.1.0", 3045 | "dev": true, 3046 | "inBundle": true, 3047 | "license": "MIT", 3048 | "dependencies": { 3049 | "load-json-file": "^1.0.0", 3050 | "normalize-package-data": "^2.3.2", 3051 | "path-type": "^1.0.0" 3052 | }, 3053 | "engines": { 3054 | "node": ">=0.10.0" 3055 | } 3056 | }, 3057 | "node_modules/nyc/node_modules/read-pkg-up": { 3058 | "version": "1.0.1", 3059 | "dev": true, 3060 | "inBundle": true, 3061 | "license": "MIT", 3062 | "dependencies": { 3063 | "find-up": "^1.0.0", 3064 | "read-pkg": "^1.0.0" 3065 | }, 3066 | "engines": { 3067 | "node": ">=0.10.0" 3068 | } 3069 | }, 3070 | "node_modules/nyc/node_modules/read-pkg-up/node_modules/find-up": { 3071 | "version": "1.1.2", 3072 | "dev": true, 3073 | "inBundle": true, 3074 | "license": "MIT", 3075 | "dependencies": { 3076 | "path-exists": "^2.0.0", 3077 | "pinkie-promise": "^2.0.0" 3078 | }, 3079 | "engines": { 3080 | "node": ">=0.10.0" 3081 | } 3082 | }, 3083 | "node_modules/nyc/node_modules/regenerator-runtime": { 3084 | "version": "0.11.1", 3085 | "dev": true, 3086 | "inBundle": true, 3087 | "license": "MIT" 3088 | }, 3089 | "node_modules/nyc/node_modules/regex-not": { 3090 | "version": "1.0.2", 3091 | "dev": true, 3092 | "inBundle": true, 3093 | "license": "MIT", 3094 | "dependencies": { 3095 | "extend-shallow": "^3.0.2", 3096 | "safe-regex": "^1.1.0" 3097 | }, 3098 | "engines": { 3099 | "node": ">=0.10.0" 3100 | } 3101 | }, 3102 | "node_modules/nyc/node_modules/repeat-element": { 3103 | "version": "1.1.2", 3104 | "dev": true, 3105 | "inBundle": true, 3106 | "license": "MIT", 3107 | "engines": { 3108 | "node": ">=0.10.0" 3109 | } 3110 | }, 3111 | "node_modules/nyc/node_modules/repeat-string": { 3112 | "version": "1.6.1", 3113 | "dev": true, 3114 | "inBundle": true, 3115 | "license": "MIT", 3116 | "engines": { 3117 | "node": ">=0.10" 3118 | } 3119 | }, 3120 | "node_modules/nyc/node_modules/repeating": { 3121 | "version": "2.0.1", 3122 | "dev": true, 3123 | "inBundle": true, 3124 | "license": "MIT", 3125 | "dependencies": { 3126 | "is-finite": "^1.0.0" 3127 | }, 3128 | "engines": { 3129 | "node": ">=0.10.0" 3130 | } 3131 | }, 3132 | "node_modules/nyc/node_modules/require-directory": { 3133 | "version": "2.1.1", 3134 | "dev": true, 3135 | "inBundle": true, 3136 | "license": "MIT", 3137 | "engines": { 3138 | "node": ">=0.10.0" 3139 | } 3140 | }, 3141 | "node_modules/nyc/node_modules/require-main-filename": { 3142 | "version": "1.0.1", 3143 | "dev": true, 3144 | "inBundle": true, 3145 | "license": "ISC" 3146 | }, 3147 | "node_modules/nyc/node_modules/resolve-from": { 3148 | "version": "2.0.0", 3149 | "dev": true, 3150 | "inBundle": true, 3151 | "license": "MIT", 3152 | "engines": { 3153 | "node": ">=0.10.0" 3154 | } 3155 | }, 3156 | "node_modules/nyc/node_modules/resolve-url": { 3157 | "version": "0.2.1", 3158 | "dev": true, 3159 | "inBundle": true, 3160 | "license": "MIT" 3161 | }, 3162 | "node_modules/nyc/node_modules/ret": { 3163 | "version": "0.1.15", 3164 | "dev": true, 3165 | "inBundle": true, 3166 | "license": "MIT", 3167 | "engines": { 3168 | "node": ">=0.12" 3169 | } 3170 | }, 3171 | "node_modules/nyc/node_modules/right-align": { 3172 | "version": "0.1.3", 3173 | "dev": true, 3174 | "inBundle": true, 3175 | "license": "MIT", 3176 | "optional": true, 3177 | "dependencies": { 3178 | "align-text": "^0.1.1" 3179 | }, 3180 | "engines": { 3181 | "node": ">=0.10.0" 3182 | } 3183 | }, 3184 | "node_modules/nyc/node_modules/rimraf": { 3185 | "version": "2.6.2", 3186 | "dev": true, 3187 | "inBundle": true, 3188 | "license": "ISC", 3189 | "dependencies": { 3190 | "glob": "^7.0.5" 3191 | }, 3192 | "bin": { 3193 | "rimraf": "bin.js" 3194 | } 3195 | }, 3196 | "node_modules/nyc/node_modules/safe-regex": { 3197 | "version": "1.1.0", 3198 | "dev": true, 3199 | "inBundle": true, 3200 | "license": "MIT", 3201 | "dependencies": { 3202 | "ret": "~0.1.10" 3203 | } 3204 | }, 3205 | "node_modules/nyc/node_modules/semver": { 3206 | "version": "5.5.0", 3207 | "dev": true, 3208 | "inBundle": true, 3209 | "license": "ISC", 3210 | "bin": { 3211 | "semver": "bin/semver" 3212 | } 3213 | }, 3214 | "node_modules/nyc/node_modules/set-blocking": { 3215 | "version": "2.0.0", 3216 | "dev": true, 3217 | "inBundle": true, 3218 | "license": "ISC" 3219 | }, 3220 | "node_modules/nyc/node_modules/set-value": { 3221 | "version": "2.0.0", 3222 | "dev": true, 3223 | "inBundle": true, 3224 | "license": "MIT", 3225 | "dependencies": { 3226 | "extend-shallow": "^2.0.1", 3227 | "is-extendable": "^0.1.1", 3228 | "is-plain-object": "^2.0.3", 3229 | "split-string": "^3.0.1" 3230 | }, 3231 | "engines": { 3232 | "node": ">=0.10.0" 3233 | } 3234 | }, 3235 | "node_modules/nyc/node_modules/set-value/node_modules/extend-shallow": { 3236 | "version": "2.0.1", 3237 | "dev": true, 3238 | "inBundle": true, 3239 | "license": "MIT", 3240 | "dependencies": { 3241 | "is-extendable": "^0.1.0" 3242 | }, 3243 | "engines": { 3244 | "node": ">=0.10.0" 3245 | } 3246 | }, 3247 | "node_modules/nyc/node_modules/shebang-command": { 3248 | "version": "1.2.0", 3249 | "dev": true, 3250 | "inBundle": true, 3251 | "license": "MIT", 3252 | "dependencies": { 3253 | "shebang-regex": "^1.0.0" 3254 | }, 3255 | "engines": { 3256 | "node": ">=0.10.0" 3257 | } 3258 | }, 3259 | "node_modules/nyc/node_modules/shebang-regex": { 3260 | "version": "1.0.0", 3261 | "dev": true, 3262 | "inBundle": true, 3263 | "license": "MIT", 3264 | "engines": { 3265 | "node": ">=0.10.0" 3266 | } 3267 | }, 3268 | "node_modules/nyc/node_modules/signal-exit": { 3269 | "version": "3.0.2", 3270 | "dev": true, 3271 | "inBundle": true, 3272 | "license": "ISC" 3273 | }, 3274 | "node_modules/nyc/node_modules/slide": { 3275 | "version": "1.1.6", 3276 | "dev": true, 3277 | "inBundle": true, 3278 | "license": "ISC", 3279 | "engines": { 3280 | "node": "*" 3281 | } 3282 | }, 3283 | "node_modules/nyc/node_modules/snapdragon": { 3284 | "version": "0.8.2", 3285 | "dev": true, 3286 | "inBundle": true, 3287 | "license": "MIT", 3288 | "dependencies": { 3289 | "base": "^0.11.1", 3290 | "debug": "^2.2.0", 3291 | "define-property": "^0.2.5", 3292 | "extend-shallow": "^2.0.1", 3293 | "map-cache": "^0.2.2", 3294 | "source-map": "^0.5.6", 3295 | "source-map-resolve": "^0.5.0", 3296 | "use": "^3.1.0" 3297 | }, 3298 | "engines": { 3299 | "node": ">=0.10.0" 3300 | } 3301 | }, 3302 | "node_modules/nyc/node_modules/snapdragon-node": { 3303 | "version": "2.1.1", 3304 | "dev": true, 3305 | "inBundle": true, 3306 | "license": "MIT", 3307 | "dependencies": { 3308 | "define-property": "^1.0.0", 3309 | "isobject": "^3.0.0", 3310 | "snapdragon-util": "^3.0.1" 3311 | }, 3312 | "engines": { 3313 | "node": ">=0.10.0" 3314 | } 3315 | }, 3316 | "node_modules/nyc/node_modules/snapdragon-node/node_modules/define-property": { 3317 | "version": "1.0.0", 3318 | "dev": true, 3319 | "inBundle": true, 3320 | "license": "MIT", 3321 | "dependencies": { 3322 | "is-descriptor": "^1.0.0" 3323 | }, 3324 | "engines": { 3325 | "node": ">=0.10.0" 3326 | } 3327 | }, 3328 | "node_modules/nyc/node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { 3329 | "version": "1.0.0", 3330 | "dev": true, 3331 | "inBundle": true, 3332 | "license": "MIT", 3333 | "dependencies": { 3334 | "kind-of": "^6.0.0" 3335 | }, 3336 | "engines": { 3337 | "node": ">=0.10.0" 3338 | } 3339 | }, 3340 | "node_modules/nyc/node_modules/snapdragon-node/node_modules/is-data-descriptor": { 3341 | "version": "1.0.0", 3342 | "dev": true, 3343 | "inBundle": true, 3344 | "license": "MIT", 3345 | "dependencies": { 3346 | "kind-of": "^6.0.0" 3347 | }, 3348 | "engines": { 3349 | "node": ">=0.10.0" 3350 | } 3351 | }, 3352 | "node_modules/nyc/node_modules/snapdragon-node/node_modules/is-descriptor": { 3353 | "version": "1.0.2", 3354 | "dev": true, 3355 | "inBundle": true, 3356 | "license": "MIT", 3357 | "dependencies": { 3358 | "is-accessor-descriptor": "^1.0.0", 3359 | "is-data-descriptor": "^1.0.0", 3360 | "kind-of": "^6.0.2" 3361 | }, 3362 | "engines": { 3363 | "node": ">=0.10.0" 3364 | } 3365 | }, 3366 | "node_modules/nyc/node_modules/snapdragon-node/node_modules/isobject": { 3367 | "version": "3.0.1", 3368 | "dev": true, 3369 | "inBundle": true, 3370 | "license": "MIT", 3371 | "engines": { 3372 | "node": ">=0.10.0" 3373 | } 3374 | }, 3375 | "node_modules/nyc/node_modules/snapdragon-node/node_modules/kind-of": { 3376 | "version": "6.0.2", 3377 | "dev": true, 3378 | "inBundle": true, 3379 | "license": "MIT", 3380 | "engines": { 3381 | "node": ">=0.10.0" 3382 | } 3383 | }, 3384 | "node_modules/nyc/node_modules/snapdragon-util": { 3385 | "version": "3.0.1", 3386 | "dev": true, 3387 | "inBundle": true, 3388 | "license": "MIT", 3389 | "dependencies": { 3390 | "kind-of": "^3.2.0" 3391 | }, 3392 | "engines": { 3393 | "node": ">=0.10.0" 3394 | } 3395 | }, 3396 | "node_modules/nyc/node_modules/snapdragon/node_modules/define-property": { 3397 | "version": "0.2.5", 3398 | "dev": true, 3399 | "inBundle": true, 3400 | "license": "MIT", 3401 | "dependencies": { 3402 | "is-descriptor": "^0.1.0" 3403 | }, 3404 | "engines": { 3405 | "node": ">=0.10.0" 3406 | } 3407 | }, 3408 | "node_modules/nyc/node_modules/snapdragon/node_modules/extend-shallow": { 3409 | "version": "2.0.1", 3410 | "dev": true, 3411 | "inBundle": true, 3412 | "license": "MIT", 3413 | "dependencies": { 3414 | "is-extendable": "^0.1.0" 3415 | }, 3416 | "engines": { 3417 | "node": ">=0.10.0" 3418 | } 3419 | }, 3420 | "node_modules/nyc/node_modules/source-map": { 3421 | "version": "0.5.7", 3422 | "dev": true, 3423 | "inBundle": true, 3424 | "license": "BSD-3-Clause", 3425 | "engines": { 3426 | "node": ">=0.10.0" 3427 | } 3428 | }, 3429 | "node_modules/nyc/node_modules/source-map-resolve": { 3430 | "version": "0.5.1", 3431 | "dev": true, 3432 | "inBundle": true, 3433 | "license": "MIT", 3434 | "dependencies": { 3435 | "atob": "^2.0.0", 3436 | "decode-uri-component": "^0.2.0", 3437 | "resolve-url": "^0.2.1", 3438 | "source-map-url": "^0.4.0", 3439 | "urix": "^0.1.0" 3440 | } 3441 | }, 3442 | "node_modules/nyc/node_modules/source-map-url": { 3443 | "version": "0.4.0", 3444 | "dev": true, 3445 | "inBundle": true, 3446 | "license": "MIT" 3447 | }, 3448 | "node_modules/nyc/node_modules/spawn-wrap": { 3449 | "version": "1.4.2", 3450 | "dev": true, 3451 | "inBundle": true, 3452 | "license": "ISC", 3453 | "dependencies": { 3454 | "foreground-child": "^1.5.6", 3455 | "mkdirp": "^0.5.0", 3456 | "os-homedir": "^1.0.1", 3457 | "rimraf": "^2.6.2", 3458 | "signal-exit": "^3.0.2", 3459 | "which": "^1.3.0" 3460 | } 3461 | }, 3462 | "node_modules/nyc/node_modules/spdx-correct": { 3463 | "version": "3.0.0", 3464 | "dev": true, 3465 | "inBundle": true, 3466 | "license": "Apache-2.0", 3467 | "dependencies": { 3468 | "spdx-expression-parse": "^3.0.0", 3469 | "spdx-license-ids": "^3.0.0" 3470 | } 3471 | }, 3472 | "node_modules/nyc/node_modules/spdx-exceptions": { 3473 | "version": "2.1.0", 3474 | "dev": true, 3475 | "inBundle": true, 3476 | "license": "CC-BY-3.0" 3477 | }, 3478 | "node_modules/nyc/node_modules/spdx-expression-parse": { 3479 | "version": "3.0.0", 3480 | "dev": true, 3481 | "inBundle": true, 3482 | "license": "MIT", 3483 | "dependencies": { 3484 | "spdx-exceptions": "^2.1.0", 3485 | "spdx-license-ids": "^3.0.0" 3486 | } 3487 | }, 3488 | "node_modules/nyc/node_modules/spdx-license-ids": { 3489 | "version": "3.0.0", 3490 | "dev": true, 3491 | "inBundle": true, 3492 | "license": "CC0-1.0" 3493 | }, 3494 | "node_modules/nyc/node_modules/split-string": { 3495 | "version": "3.1.0", 3496 | "dev": true, 3497 | "inBundle": true, 3498 | "license": "MIT", 3499 | "dependencies": { 3500 | "extend-shallow": "^3.0.0" 3501 | }, 3502 | "engines": { 3503 | "node": ">=0.10.0" 3504 | } 3505 | }, 3506 | "node_modules/nyc/node_modules/static-extend": { 3507 | "version": "0.1.2", 3508 | "dev": true, 3509 | "inBundle": true, 3510 | "license": "MIT", 3511 | "dependencies": { 3512 | "define-property": "^0.2.5", 3513 | "object-copy": "^0.1.0" 3514 | }, 3515 | "engines": { 3516 | "node": ">=0.10.0" 3517 | } 3518 | }, 3519 | "node_modules/nyc/node_modules/static-extend/node_modules/define-property": { 3520 | "version": "0.2.5", 3521 | "dev": true, 3522 | "inBundle": true, 3523 | "license": "MIT", 3524 | "dependencies": { 3525 | "is-descriptor": "^0.1.0" 3526 | }, 3527 | "engines": { 3528 | "node": ">=0.10.0" 3529 | } 3530 | }, 3531 | "node_modules/nyc/node_modules/string-width": { 3532 | "version": "2.1.1", 3533 | "dev": true, 3534 | "inBundle": true, 3535 | "license": "MIT", 3536 | "dependencies": { 3537 | "is-fullwidth-code-point": "^2.0.0", 3538 | "strip-ansi": "^4.0.0" 3539 | }, 3540 | "engines": { 3541 | "node": ">=4" 3542 | } 3543 | }, 3544 | "node_modules/nyc/node_modules/string-width/node_modules/ansi-regex": { 3545 | "version": "3.0.0", 3546 | "dev": true, 3547 | "inBundle": true, 3548 | "license": "MIT", 3549 | "engines": { 3550 | "node": ">=4" 3551 | } 3552 | }, 3553 | "node_modules/nyc/node_modules/string-width/node_modules/strip-ansi": { 3554 | "version": "4.0.0", 3555 | "dev": true, 3556 | "inBundle": true, 3557 | "license": "MIT", 3558 | "dependencies": { 3559 | "ansi-regex": "^3.0.0" 3560 | }, 3561 | "engines": { 3562 | "node": ">=4" 3563 | } 3564 | }, 3565 | "node_modules/nyc/node_modules/strip-ansi": { 3566 | "version": "3.0.1", 3567 | "dev": true, 3568 | "inBundle": true, 3569 | "license": "MIT", 3570 | "dependencies": { 3571 | "ansi-regex": "^2.0.0" 3572 | }, 3573 | "engines": { 3574 | "node": ">=0.10.0" 3575 | } 3576 | }, 3577 | "node_modules/nyc/node_modules/strip-bom": { 3578 | "version": "2.0.0", 3579 | "dev": true, 3580 | "inBundle": true, 3581 | "license": "MIT", 3582 | "dependencies": { 3583 | "is-utf8": "^0.2.0" 3584 | }, 3585 | "engines": { 3586 | "node": ">=0.10.0" 3587 | } 3588 | }, 3589 | "node_modules/nyc/node_modules/strip-eof": { 3590 | "version": "1.0.0", 3591 | "dev": true, 3592 | "inBundle": true, 3593 | "license": "MIT", 3594 | "engines": { 3595 | "node": ">=0.10.0" 3596 | } 3597 | }, 3598 | "node_modules/nyc/node_modules/supports-color": { 3599 | "version": "2.0.0", 3600 | "dev": true, 3601 | "inBundle": true, 3602 | "license": "MIT", 3603 | "engines": { 3604 | "node": ">=0.8.0" 3605 | } 3606 | }, 3607 | "node_modules/nyc/node_modules/test-exclude": { 3608 | "version": "4.2.1", 3609 | "dev": true, 3610 | "inBundle": true, 3611 | "license": "ISC", 3612 | "dependencies": { 3613 | "arrify": "^1.0.1", 3614 | "micromatch": "^3.1.8", 3615 | "object-assign": "^4.1.0", 3616 | "read-pkg-up": "^1.0.1", 3617 | "require-main-filename": "^1.0.1" 3618 | } 3619 | }, 3620 | "node_modules/nyc/node_modules/test-exclude/node_modules/arr-diff": { 3621 | "version": "4.0.0", 3622 | "dev": true, 3623 | "inBundle": true, 3624 | "license": "MIT", 3625 | "engines": { 3626 | "node": ">=0.10.0" 3627 | } 3628 | }, 3629 | "node_modules/nyc/node_modules/test-exclude/node_modules/array-unique": { 3630 | "version": "0.3.2", 3631 | "dev": true, 3632 | "inBundle": true, 3633 | "license": "MIT", 3634 | "engines": { 3635 | "node": ">=0.10.0" 3636 | } 3637 | }, 3638 | "node_modules/nyc/node_modules/test-exclude/node_modules/braces": { 3639 | "version": "2.3.2", 3640 | "dev": true, 3641 | "inBundle": true, 3642 | "license": "MIT", 3643 | "dependencies": { 3644 | "arr-flatten": "^1.1.0", 3645 | "array-unique": "^0.3.2", 3646 | "extend-shallow": "^2.0.1", 3647 | "fill-range": "^4.0.0", 3648 | "isobject": "^3.0.1", 3649 | "repeat-element": "^1.1.2", 3650 | "snapdragon": "^0.8.1", 3651 | "snapdragon-node": "^2.0.1", 3652 | "split-string": "^3.0.2", 3653 | "to-regex": "^3.0.1" 3654 | }, 3655 | "engines": { 3656 | "node": ">=0.10.0" 3657 | } 3658 | }, 3659 | "node_modules/nyc/node_modules/test-exclude/node_modules/braces/node_modules/extend-shallow": { 3660 | "version": "2.0.1", 3661 | "dev": true, 3662 | "inBundle": true, 3663 | "license": "MIT", 3664 | "dependencies": { 3665 | "is-extendable": "^0.1.0" 3666 | }, 3667 | "engines": { 3668 | "node": ">=0.10.0" 3669 | } 3670 | }, 3671 | "node_modules/nyc/node_modules/test-exclude/node_modules/expand-brackets": { 3672 | "version": "2.1.4", 3673 | "dev": true, 3674 | "inBundle": true, 3675 | "license": "MIT", 3676 | "dependencies": { 3677 | "debug": "^2.3.3", 3678 | "define-property": "^0.2.5", 3679 | "extend-shallow": "^2.0.1", 3680 | "posix-character-classes": "^0.1.0", 3681 | "regex-not": "^1.0.0", 3682 | "snapdragon": "^0.8.1", 3683 | "to-regex": "^3.0.1" 3684 | }, 3685 | "engines": { 3686 | "node": ">=0.10.0" 3687 | } 3688 | }, 3689 | "node_modules/nyc/node_modules/test-exclude/node_modules/expand-brackets/node_modules/define-property": { 3690 | "version": "0.2.5", 3691 | "dev": true, 3692 | "inBundle": true, 3693 | "license": "MIT", 3694 | "dependencies": { 3695 | "is-descriptor": "^0.1.0" 3696 | }, 3697 | "engines": { 3698 | "node": ">=0.10.0" 3699 | } 3700 | }, 3701 | "node_modules/nyc/node_modules/test-exclude/node_modules/expand-brackets/node_modules/extend-shallow": { 3702 | "version": "2.0.1", 3703 | "dev": true, 3704 | "inBundle": true, 3705 | "license": "MIT", 3706 | "dependencies": { 3707 | "is-extendable": "^0.1.0" 3708 | }, 3709 | "engines": { 3710 | "node": ">=0.10.0" 3711 | } 3712 | }, 3713 | "node_modules/nyc/node_modules/test-exclude/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { 3714 | "version": "0.1.6", 3715 | "dev": true, 3716 | "inBundle": true, 3717 | "license": "MIT", 3718 | "dependencies": { 3719 | "kind-of": "^3.0.2" 3720 | }, 3721 | "engines": { 3722 | "node": ">=0.10.0" 3723 | } 3724 | }, 3725 | "node_modules/nyc/node_modules/test-exclude/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { 3726 | "version": "3.2.2", 3727 | "dev": true, 3728 | "inBundle": true, 3729 | "license": "MIT", 3730 | "dependencies": { 3731 | "is-buffer": "^1.1.5" 3732 | }, 3733 | "engines": { 3734 | "node": ">=0.10.0" 3735 | } 3736 | }, 3737 | "node_modules/nyc/node_modules/test-exclude/node_modules/expand-brackets/node_modules/is-data-descriptor": { 3738 | "version": "0.1.4", 3739 | "dev": true, 3740 | "inBundle": true, 3741 | "license": "MIT", 3742 | "dependencies": { 3743 | "kind-of": "^3.0.2" 3744 | }, 3745 | "engines": { 3746 | "node": ">=0.10.0" 3747 | } 3748 | }, 3749 | "node_modules/nyc/node_modules/test-exclude/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { 3750 | "version": "3.2.2", 3751 | "dev": true, 3752 | "inBundle": true, 3753 | "license": "MIT", 3754 | "dependencies": { 3755 | "is-buffer": "^1.1.5" 3756 | }, 3757 | "engines": { 3758 | "node": ">=0.10.0" 3759 | } 3760 | }, 3761 | "node_modules/nyc/node_modules/test-exclude/node_modules/expand-brackets/node_modules/is-descriptor": { 3762 | "version": "0.1.6", 3763 | "dev": true, 3764 | "inBundle": true, 3765 | "license": "MIT", 3766 | "dependencies": { 3767 | "is-accessor-descriptor": "^0.1.6", 3768 | "is-data-descriptor": "^0.1.4", 3769 | "kind-of": "^5.0.0" 3770 | }, 3771 | "engines": { 3772 | "node": ">=0.10.0" 3773 | } 3774 | }, 3775 | "node_modules/nyc/node_modules/test-exclude/node_modules/expand-brackets/node_modules/kind-of": { 3776 | "version": "5.1.0", 3777 | "dev": true, 3778 | "inBundle": true, 3779 | "license": "MIT", 3780 | "engines": { 3781 | "node": ">=0.10.0" 3782 | } 3783 | }, 3784 | "node_modules/nyc/node_modules/test-exclude/node_modules/extglob": { 3785 | "version": "2.0.4", 3786 | "dev": true, 3787 | "inBundle": true, 3788 | "license": "MIT", 3789 | "dependencies": { 3790 | "array-unique": "^0.3.2", 3791 | "define-property": "^1.0.0", 3792 | "expand-brackets": "^2.1.4", 3793 | "extend-shallow": "^2.0.1", 3794 | "fragment-cache": "^0.2.1", 3795 | "regex-not": "^1.0.0", 3796 | "snapdragon": "^0.8.1", 3797 | "to-regex": "^3.0.1" 3798 | }, 3799 | "engines": { 3800 | "node": ">=0.10.0" 3801 | } 3802 | }, 3803 | "node_modules/nyc/node_modules/test-exclude/node_modules/extglob/node_modules/define-property": { 3804 | "version": "1.0.0", 3805 | "dev": true, 3806 | "inBundle": true, 3807 | "license": "MIT", 3808 | "dependencies": { 3809 | "is-descriptor": "^1.0.0" 3810 | }, 3811 | "engines": { 3812 | "node": ">=0.10.0" 3813 | } 3814 | }, 3815 | "node_modules/nyc/node_modules/test-exclude/node_modules/extglob/node_modules/extend-shallow": { 3816 | "version": "2.0.1", 3817 | "dev": true, 3818 | "inBundle": true, 3819 | "license": "MIT", 3820 | "dependencies": { 3821 | "is-extendable": "^0.1.0" 3822 | }, 3823 | "engines": { 3824 | "node": ">=0.10.0" 3825 | } 3826 | }, 3827 | "node_modules/nyc/node_modules/test-exclude/node_modules/fill-range": { 3828 | "version": "4.0.0", 3829 | "dev": true, 3830 | "inBundle": true, 3831 | "license": "MIT", 3832 | "dependencies": { 3833 | "extend-shallow": "^2.0.1", 3834 | "is-number": "^3.0.0", 3835 | "repeat-string": "^1.6.1", 3836 | "to-regex-range": "^2.1.0" 3837 | }, 3838 | "engines": { 3839 | "node": ">=0.10.0" 3840 | } 3841 | }, 3842 | "node_modules/nyc/node_modules/test-exclude/node_modules/fill-range/node_modules/extend-shallow": { 3843 | "version": "2.0.1", 3844 | "dev": true, 3845 | "inBundle": true, 3846 | "license": "MIT", 3847 | "dependencies": { 3848 | "is-extendable": "^0.1.0" 3849 | }, 3850 | "engines": { 3851 | "node": ">=0.10.0" 3852 | } 3853 | }, 3854 | "node_modules/nyc/node_modules/test-exclude/node_modules/is-accessor-descriptor": { 3855 | "version": "1.0.0", 3856 | "dev": true, 3857 | "inBundle": true, 3858 | "license": "MIT", 3859 | "dependencies": { 3860 | "kind-of": "^6.0.0" 3861 | }, 3862 | "engines": { 3863 | "node": ">=0.10.0" 3864 | } 3865 | }, 3866 | "node_modules/nyc/node_modules/test-exclude/node_modules/is-data-descriptor": { 3867 | "version": "1.0.0", 3868 | "dev": true, 3869 | "inBundle": true, 3870 | "license": "MIT", 3871 | "dependencies": { 3872 | "kind-of": "^6.0.0" 3873 | }, 3874 | "engines": { 3875 | "node": ">=0.10.0" 3876 | } 3877 | }, 3878 | "node_modules/nyc/node_modules/test-exclude/node_modules/is-descriptor": { 3879 | "version": "1.0.2", 3880 | "dev": true, 3881 | "inBundle": true, 3882 | "license": "MIT", 3883 | "dependencies": { 3884 | "is-accessor-descriptor": "^1.0.0", 3885 | "is-data-descriptor": "^1.0.0", 3886 | "kind-of": "^6.0.2" 3887 | }, 3888 | "engines": { 3889 | "node": ">=0.10.0" 3890 | } 3891 | }, 3892 | "node_modules/nyc/node_modules/test-exclude/node_modules/is-number": { 3893 | "version": "3.0.0", 3894 | "dev": true, 3895 | "inBundle": true, 3896 | "license": "MIT", 3897 | "dependencies": { 3898 | "kind-of": "^3.0.2" 3899 | }, 3900 | "engines": { 3901 | "node": ">=0.10.0" 3902 | } 3903 | }, 3904 | "node_modules/nyc/node_modules/test-exclude/node_modules/is-number/node_modules/kind-of": { 3905 | "version": "3.2.2", 3906 | "dev": true, 3907 | "inBundle": true, 3908 | "license": "MIT", 3909 | "dependencies": { 3910 | "is-buffer": "^1.1.5" 3911 | }, 3912 | "engines": { 3913 | "node": ">=0.10.0" 3914 | } 3915 | }, 3916 | "node_modules/nyc/node_modules/test-exclude/node_modules/isobject": { 3917 | "version": "3.0.1", 3918 | "dev": true, 3919 | "inBundle": true, 3920 | "license": "MIT", 3921 | "engines": { 3922 | "node": ">=0.10.0" 3923 | } 3924 | }, 3925 | "node_modules/nyc/node_modules/test-exclude/node_modules/kind-of": { 3926 | "version": "6.0.2", 3927 | "dev": true, 3928 | "inBundle": true, 3929 | "license": "MIT", 3930 | "engines": { 3931 | "node": ">=0.10.0" 3932 | } 3933 | }, 3934 | "node_modules/nyc/node_modules/test-exclude/node_modules/micromatch": { 3935 | "version": "3.1.10", 3936 | "dev": true, 3937 | "inBundle": true, 3938 | "license": "MIT", 3939 | "dependencies": { 3940 | "arr-diff": "^4.0.0", 3941 | "array-unique": "^0.3.2", 3942 | "braces": "^2.3.1", 3943 | "define-property": "^2.0.2", 3944 | "extend-shallow": "^3.0.2", 3945 | "extglob": "^2.0.4", 3946 | "fragment-cache": "^0.2.1", 3947 | "kind-of": "^6.0.2", 3948 | "nanomatch": "^1.2.9", 3949 | "object.pick": "^1.3.0", 3950 | "regex-not": "^1.0.0", 3951 | "snapdragon": "^0.8.1", 3952 | "to-regex": "^3.0.2" 3953 | }, 3954 | "engines": { 3955 | "node": ">=0.10.0" 3956 | } 3957 | }, 3958 | "node_modules/nyc/node_modules/to-fast-properties": { 3959 | "version": "1.0.3", 3960 | "dev": true, 3961 | "inBundle": true, 3962 | "license": "MIT", 3963 | "engines": { 3964 | "node": ">=0.10.0" 3965 | } 3966 | }, 3967 | "node_modules/nyc/node_modules/to-object-path": { 3968 | "version": "0.3.0", 3969 | "dev": true, 3970 | "inBundle": true, 3971 | "license": "MIT", 3972 | "dependencies": { 3973 | "kind-of": "^3.0.2" 3974 | }, 3975 | "engines": { 3976 | "node": ">=0.10.0" 3977 | } 3978 | }, 3979 | "node_modules/nyc/node_modules/to-regex": { 3980 | "version": "3.0.2", 3981 | "dev": true, 3982 | "inBundle": true, 3983 | "license": "MIT", 3984 | "dependencies": { 3985 | "define-property": "^2.0.2", 3986 | "extend-shallow": "^3.0.2", 3987 | "regex-not": "^1.0.2", 3988 | "safe-regex": "^1.1.0" 3989 | }, 3990 | "engines": { 3991 | "node": ">=0.10.0" 3992 | } 3993 | }, 3994 | "node_modules/nyc/node_modules/to-regex-range": { 3995 | "version": "2.1.1", 3996 | "dev": true, 3997 | "inBundle": true, 3998 | "license": "MIT", 3999 | "dependencies": { 4000 | "is-number": "^3.0.0", 4001 | "repeat-string": "^1.6.1" 4002 | }, 4003 | "engines": { 4004 | "node": ">=0.10.0" 4005 | } 4006 | }, 4007 | "node_modules/nyc/node_modules/to-regex-range/node_modules/is-number": { 4008 | "version": "3.0.0", 4009 | "dev": true, 4010 | "inBundle": true, 4011 | "license": "MIT", 4012 | "dependencies": { 4013 | "kind-of": "^3.0.2" 4014 | }, 4015 | "engines": { 4016 | "node": ">=0.10.0" 4017 | } 4018 | }, 4019 | "node_modules/nyc/node_modules/trim-right": { 4020 | "version": "1.0.1", 4021 | "dev": true, 4022 | "inBundle": true, 4023 | "license": "MIT", 4024 | "engines": { 4025 | "node": ">=0.10.0" 4026 | } 4027 | }, 4028 | "node_modules/nyc/node_modules/uglify-js": { 4029 | "version": "2.8.29", 4030 | "dev": true, 4031 | "inBundle": true, 4032 | "license": "BSD-2-Clause", 4033 | "optional": true, 4034 | "dependencies": { 4035 | "source-map": "~0.5.1", 4036 | "yargs": "~3.10.0" 4037 | }, 4038 | "bin": { 4039 | "uglifyjs": "bin/uglifyjs" 4040 | }, 4041 | "engines": { 4042 | "node": ">=0.8.0" 4043 | }, 4044 | "optionalDependencies": { 4045 | "uglify-to-browserify": "~1.0.0" 4046 | } 4047 | }, 4048 | "node_modules/nyc/node_modules/uglify-js/node_modules/yargs": { 4049 | "version": "3.10.0", 4050 | "dev": true, 4051 | "inBundle": true, 4052 | "license": "MIT", 4053 | "optional": true, 4054 | "dependencies": { 4055 | "camelcase": "^1.0.2", 4056 | "cliui": "^2.1.0", 4057 | "decamelize": "^1.0.0", 4058 | "window-size": "0.1.0" 4059 | } 4060 | }, 4061 | "node_modules/nyc/node_modules/uglify-to-browserify": { 4062 | "version": "1.0.2", 4063 | "dev": true, 4064 | "inBundle": true, 4065 | "license": "MIT", 4066 | "optional": true 4067 | }, 4068 | "node_modules/nyc/node_modules/union-value": { 4069 | "version": "1.0.0", 4070 | "dev": true, 4071 | "inBundle": true, 4072 | "license": "MIT", 4073 | "dependencies": { 4074 | "arr-union": "^3.1.0", 4075 | "get-value": "^2.0.6", 4076 | "is-extendable": "^0.1.1", 4077 | "set-value": "^0.4.3" 4078 | }, 4079 | "engines": { 4080 | "node": ">=0.10.0" 4081 | } 4082 | }, 4083 | "node_modules/nyc/node_modules/union-value/node_modules/extend-shallow": { 4084 | "version": "2.0.1", 4085 | "dev": true, 4086 | "inBundle": true, 4087 | "license": "MIT", 4088 | "dependencies": { 4089 | "is-extendable": "^0.1.0" 4090 | }, 4091 | "engines": { 4092 | "node": ">=0.10.0" 4093 | } 4094 | }, 4095 | "node_modules/nyc/node_modules/union-value/node_modules/set-value": { 4096 | "version": "0.4.3", 4097 | "dev": true, 4098 | "inBundle": true, 4099 | "license": "MIT", 4100 | "dependencies": { 4101 | "extend-shallow": "^2.0.1", 4102 | "is-extendable": "^0.1.1", 4103 | "is-plain-object": "^2.0.1", 4104 | "to-object-path": "^0.3.0" 4105 | }, 4106 | "engines": { 4107 | "node": ">=0.10.0" 4108 | } 4109 | }, 4110 | "node_modules/nyc/node_modules/unset-value": { 4111 | "version": "1.0.0", 4112 | "dev": true, 4113 | "inBundle": true, 4114 | "license": "MIT", 4115 | "dependencies": { 4116 | "has-value": "^0.3.1", 4117 | "isobject": "^3.0.0" 4118 | }, 4119 | "engines": { 4120 | "node": ">=0.10.0" 4121 | } 4122 | }, 4123 | "node_modules/nyc/node_modules/unset-value/node_modules/has-value": { 4124 | "version": "0.3.1", 4125 | "dev": true, 4126 | "inBundle": true, 4127 | "license": "MIT", 4128 | "dependencies": { 4129 | "get-value": "^2.0.3", 4130 | "has-values": "^0.1.4", 4131 | "isobject": "^2.0.0" 4132 | }, 4133 | "engines": { 4134 | "node": ">=0.10.0" 4135 | } 4136 | }, 4137 | "node_modules/nyc/node_modules/unset-value/node_modules/has-value/node_modules/isobject": { 4138 | "version": "2.1.0", 4139 | "dev": true, 4140 | "inBundle": true, 4141 | "license": "MIT", 4142 | "dependencies": { 4143 | "isarray": "1.0.0" 4144 | }, 4145 | "engines": { 4146 | "node": ">=0.10.0" 4147 | } 4148 | }, 4149 | "node_modules/nyc/node_modules/unset-value/node_modules/has-values": { 4150 | "version": "0.1.4", 4151 | "dev": true, 4152 | "inBundle": true, 4153 | "license": "MIT", 4154 | "engines": { 4155 | "node": ">=0.10.0" 4156 | } 4157 | }, 4158 | "node_modules/nyc/node_modules/unset-value/node_modules/isobject": { 4159 | "version": "3.0.1", 4160 | "dev": true, 4161 | "inBundle": true, 4162 | "license": "MIT", 4163 | "engines": { 4164 | "node": ">=0.10.0" 4165 | } 4166 | }, 4167 | "node_modules/nyc/node_modules/urix": { 4168 | "version": "0.1.0", 4169 | "dev": true, 4170 | "inBundle": true, 4171 | "license": "MIT" 4172 | }, 4173 | "node_modules/nyc/node_modules/use": { 4174 | "version": "3.1.0", 4175 | "dev": true, 4176 | "inBundle": true, 4177 | "license": "MIT", 4178 | "dependencies": { 4179 | "kind-of": "^6.0.2" 4180 | }, 4181 | "engines": { 4182 | "node": ">=0.10.0" 4183 | } 4184 | }, 4185 | "node_modules/nyc/node_modules/use/node_modules/kind-of": { 4186 | "version": "6.0.2", 4187 | "dev": true, 4188 | "inBundle": true, 4189 | "license": "MIT", 4190 | "engines": { 4191 | "node": ">=0.10.0" 4192 | } 4193 | }, 4194 | "node_modules/nyc/node_modules/validate-npm-package-license": { 4195 | "version": "3.0.3", 4196 | "dev": true, 4197 | "inBundle": true, 4198 | "license": "Apache-2.0", 4199 | "dependencies": { 4200 | "spdx-correct": "^3.0.0", 4201 | "spdx-expression-parse": "^3.0.0" 4202 | } 4203 | }, 4204 | "node_modules/nyc/node_modules/which": { 4205 | "version": "1.3.0", 4206 | "dev": true, 4207 | "inBundle": true, 4208 | "license": "ISC", 4209 | "dependencies": { 4210 | "isexe": "^2.0.0" 4211 | }, 4212 | "bin": { 4213 | "which": "bin/which" 4214 | } 4215 | }, 4216 | "node_modules/nyc/node_modules/which-module": { 4217 | "version": "2.0.0", 4218 | "dev": true, 4219 | "inBundle": true, 4220 | "license": "ISC" 4221 | }, 4222 | "node_modules/nyc/node_modules/window-size": { 4223 | "version": "0.1.0", 4224 | "dev": true, 4225 | "inBundle": true, 4226 | "optional": true, 4227 | "engines": { 4228 | "node": ">= 0.8.0" 4229 | } 4230 | }, 4231 | "node_modules/nyc/node_modules/wordwrap": { 4232 | "version": "0.0.3", 4233 | "dev": true, 4234 | "inBundle": true, 4235 | "license": "MIT", 4236 | "engines": { 4237 | "node": ">=0.4.0" 4238 | } 4239 | }, 4240 | "node_modules/nyc/node_modules/wrap-ansi": { 4241 | "version": "2.1.0", 4242 | "dev": true, 4243 | "inBundle": true, 4244 | "license": "MIT", 4245 | "dependencies": { 4246 | "string-width": "^1.0.1", 4247 | "strip-ansi": "^3.0.1" 4248 | }, 4249 | "engines": { 4250 | "node": ">=0.10.0" 4251 | } 4252 | }, 4253 | "node_modules/nyc/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { 4254 | "version": "1.0.0", 4255 | "dev": true, 4256 | "inBundle": true, 4257 | "license": "MIT", 4258 | "dependencies": { 4259 | "number-is-nan": "^1.0.0" 4260 | }, 4261 | "engines": { 4262 | "node": ">=0.10.0" 4263 | } 4264 | }, 4265 | "node_modules/nyc/node_modules/wrap-ansi/node_modules/string-width": { 4266 | "version": "1.0.2", 4267 | "dev": true, 4268 | "inBundle": true, 4269 | "license": "MIT", 4270 | "dependencies": { 4271 | "code-point-at": "^1.0.0", 4272 | "is-fullwidth-code-point": "^1.0.0", 4273 | "strip-ansi": "^3.0.0" 4274 | }, 4275 | "engines": { 4276 | "node": ">=0.10.0" 4277 | } 4278 | }, 4279 | "node_modules/nyc/node_modules/wrappy": { 4280 | "version": "1.0.2", 4281 | "dev": true, 4282 | "inBundle": true, 4283 | "license": "ISC" 4284 | }, 4285 | "node_modules/nyc/node_modules/write-file-atomic": { 4286 | "version": "1.3.4", 4287 | "dev": true, 4288 | "inBundle": true, 4289 | "license": "ISC", 4290 | "dependencies": { 4291 | "graceful-fs": "^4.1.11", 4292 | "imurmurhash": "^0.1.4", 4293 | "slide": "^1.1.5" 4294 | } 4295 | }, 4296 | "node_modules/nyc/node_modules/y18n": { 4297 | "version": "3.2.1", 4298 | "dev": true, 4299 | "inBundle": true, 4300 | "license": "ISC" 4301 | }, 4302 | "node_modules/nyc/node_modules/yallist": { 4303 | "version": "2.1.2", 4304 | "dev": true, 4305 | "inBundle": true, 4306 | "license": "ISC" 4307 | }, 4308 | "node_modules/nyc/node_modules/yargs": { 4309 | "version": "11.1.0", 4310 | "dev": true, 4311 | "inBundle": true, 4312 | "license": "MIT", 4313 | "dependencies": { 4314 | "cliui": "^4.0.0", 4315 | "decamelize": "^1.1.1", 4316 | "find-up": "^2.1.0", 4317 | "get-caller-file": "^1.0.1", 4318 | "os-locale": "^2.0.0", 4319 | "require-directory": "^2.1.1", 4320 | "require-main-filename": "^1.0.1", 4321 | "set-blocking": "^2.0.0", 4322 | "string-width": "^2.0.0", 4323 | "which-module": "^2.0.0", 4324 | "y18n": "^3.2.1", 4325 | "yargs-parser": "^9.0.2" 4326 | } 4327 | }, 4328 | "node_modules/nyc/node_modules/yargs-parser": { 4329 | "version": "8.1.0", 4330 | "dev": true, 4331 | "inBundle": true, 4332 | "license": "ISC", 4333 | "dependencies": { 4334 | "camelcase": "^4.1.0" 4335 | } 4336 | }, 4337 | "node_modules/nyc/node_modules/yargs-parser/node_modules/camelcase": { 4338 | "version": "4.1.0", 4339 | "dev": true, 4340 | "inBundle": true, 4341 | "license": "MIT", 4342 | "engines": { 4343 | "node": ">=4" 4344 | } 4345 | }, 4346 | "node_modules/nyc/node_modules/yargs/node_modules/ansi-regex": { 4347 | "version": "3.0.0", 4348 | "dev": true, 4349 | "inBundle": true, 4350 | "license": "MIT", 4351 | "engines": { 4352 | "node": ">=4" 4353 | } 4354 | }, 4355 | "node_modules/nyc/node_modules/yargs/node_modules/camelcase": { 4356 | "version": "4.1.0", 4357 | "dev": true, 4358 | "inBundle": true, 4359 | "license": "MIT", 4360 | "engines": { 4361 | "node": ">=4" 4362 | } 4363 | }, 4364 | "node_modules/nyc/node_modules/yargs/node_modules/cliui": { 4365 | "version": "4.1.0", 4366 | "dev": true, 4367 | "inBundle": true, 4368 | "license": "ISC", 4369 | "dependencies": { 4370 | "string-width": "^2.1.1", 4371 | "strip-ansi": "^4.0.0", 4372 | "wrap-ansi": "^2.0.0" 4373 | } 4374 | }, 4375 | "node_modules/nyc/node_modules/yargs/node_modules/strip-ansi": { 4376 | "version": "4.0.0", 4377 | "dev": true, 4378 | "inBundle": true, 4379 | "license": "MIT", 4380 | "dependencies": { 4381 | "ansi-regex": "^3.0.0" 4382 | }, 4383 | "engines": { 4384 | "node": ">=4" 4385 | } 4386 | }, 4387 | "node_modules/nyc/node_modules/yargs/node_modules/yargs-parser": { 4388 | "version": "9.0.2", 4389 | "dev": true, 4390 | "inBundle": true, 4391 | "license": "ISC", 4392 | "dependencies": { 4393 | "camelcase": "^4.1.0" 4394 | } 4395 | }, 4396 | "node_modules/oauth-sign": { 4397 | "version": "0.8.2", 4398 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", 4399 | "integrity": "sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg==", 4400 | "dev": true, 4401 | "engines": { 4402 | "node": "*" 4403 | } 4404 | }, 4405 | "node_modules/once": { 4406 | "version": "1.4.0", 4407 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 4408 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 4409 | "dev": true, 4410 | "dependencies": { 4411 | "wrappy": "1" 4412 | } 4413 | }, 4414 | "node_modules/opener": { 4415 | "version": "1.5.2", 4416 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", 4417 | "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", 4418 | "dev": true, 4419 | "bin": { 4420 | "opener": "bin/opener-bin.js" 4421 | } 4422 | }, 4423 | "node_modules/os-homedir": { 4424 | "version": "1.0.2", 4425 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 4426 | "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", 4427 | "dev": true, 4428 | "engines": { 4429 | "node": ">=0.10.0" 4430 | } 4431 | }, 4432 | "node_modules/own-or": { 4433 | "version": "1.0.0", 4434 | "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", 4435 | "integrity": "sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==", 4436 | "dev": true 4437 | }, 4438 | "node_modules/own-or-env": { 4439 | "version": "1.0.2", 4440 | "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.2.tgz", 4441 | "integrity": "sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==", 4442 | "dev": true, 4443 | "dependencies": { 4444 | "own-or": "^1.0.0" 4445 | } 4446 | }, 4447 | "node_modules/path-is-absolute": { 4448 | "version": "1.0.1", 4449 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 4450 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 4451 | "dev": true, 4452 | "engines": { 4453 | "node": ">=0.10.0" 4454 | } 4455 | }, 4456 | "node_modules/pinkie": { 4457 | "version": "2.0.4", 4458 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 4459 | "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", 4460 | "dev": true, 4461 | "engines": { 4462 | "node": ">=0.10.0" 4463 | } 4464 | }, 4465 | "node_modules/pinkie-promise": { 4466 | "version": "2.0.1", 4467 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 4468 | "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", 4469 | "dev": true, 4470 | "dependencies": { 4471 | "pinkie": "^2.0.0" 4472 | }, 4473 | "engines": { 4474 | "node": ">=0.10.0" 4475 | } 4476 | }, 4477 | "node_modules/process-nextick-args": { 4478 | "version": "2.0.1", 4479 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 4480 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 4481 | "dev": true 4482 | }, 4483 | "node_modules/pseudomap": { 4484 | "version": "1.0.2", 4485 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 4486 | "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", 4487 | "dev": true 4488 | }, 4489 | "node_modules/punycode": { 4490 | "version": "1.4.1", 4491 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 4492 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", 4493 | "dev": true 4494 | }, 4495 | "node_modules/qs": { 4496 | "version": "6.3.3", 4497 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.3.tgz", 4498 | "integrity": "sha512-f8CQ/sKJBr9vfNJBdGiPzTSPUufuWyvOFkCYJKN9voqPWuBuhdlSZM78dOHKigtZ0BwuktYGrRFW2DXXc/f2Fg==", 4499 | "dev": true, 4500 | "engines": { 4501 | "node": ">=0.6" 4502 | } 4503 | }, 4504 | "node_modules/readable-stream": { 4505 | "version": "2.3.8", 4506 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 4507 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 4508 | "dev": true, 4509 | "dependencies": { 4510 | "core-util-is": "~1.0.0", 4511 | "inherits": "~2.0.3", 4512 | "isarray": "~1.0.0", 4513 | "process-nextick-args": "~2.0.0", 4514 | "safe-buffer": "~5.1.1", 4515 | "string_decoder": "~1.1.1", 4516 | "util-deprecate": "~1.0.1" 4517 | } 4518 | }, 4519 | "node_modules/request": { 4520 | "version": "2.79.0", 4521 | "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", 4522 | "integrity": "sha512-e7MIJshe1eZAmRqg4ryaO0N9G0fs+/gpDe5FlbnIFy6zZznRSwdRFrLp63if0Yt43vrI5wowOqHv1qJdVocdOQ==", 4523 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 4524 | "dev": true, 4525 | "dependencies": { 4526 | "aws-sign2": "~0.6.0", 4527 | "aws4": "^1.2.1", 4528 | "caseless": "~0.11.0", 4529 | "combined-stream": "~1.0.5", 4530 | "extend": "~3.0.0", 4531 | "forever-agent": "~0.6.1", 4532 | "form-data": "~2.1.1", 4533 | "har-validator": "~2.0.6", 4534 | "hawk": "~3.1.3", 4535 | "http-signature": "~1.1.0", 4536 | "is-typedarray": "~1.0.0", 4537 | "isstream": "~0.1.2", 4538 | "json-stringify-safe": "~5.0.1", 4539 | "mime-types": "~2.1.7", 4540 | "oauth-sign": "~0.8.1", 4541 | "qs": "~6.3.0", 4542 | "stringstream": "~0.0.4", 4543 | "tough-cookie": "~2.3.0", 4544 | "tunnel-agent": "~0.4.1", 4545 | "uuid": "^3.0.0" 4546 | }, 4547 | "engines": { 4548 | "node": ">= 4" 4549 | } 4550 | }, 4551 | "node_modules/safe-buffer": { 4552 | "version": "5.1.2", 4553 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 4554 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 4555 | "dev": true 4556 | }, 4557 | "node_modules/safer-buffer": { 4558 | "version": "2.1.2", 4559 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 4560 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 4561 | "dev": true 4562 | }, 4563 | "node_modules/signal-exit": { 4564 | "version": "3.0.7", 4565 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 4566 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 4567 | "dev": true 4568 | }, 4569 | "node_modules/sntp": { 4570 | "version": "1.0.9", 4571 | "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", 4572 | "integrity": "sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A==", 4573 | "deprecated": "This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", 4574 | "dev": true, 4575 | "dependencies": { 4576 | "hoek": "2.x.x" 4577 | }, 4578 | "engines": { 4579 | "node": ">=0.8.0" 4580 | } 4581 | }, 4582 | "node_modules/source-map": { 4583 | "version": "0.5.7", 4584 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 4585 | "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", 4586 | "dev": true, 4587 | "engines": { 4588 | "node": ">=0.10.0" 4589 | } 4590 | }, 4591 | "node_modules/source-map-support": { 4592 | "version": "0.4.18", 4593 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 4594 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 4595 | "dev": true, 4596 | "dependencies": { 4597 | "source-map": "^0.5.6" 4598 | } 4599 | }, 4600 | "node_modules/sprintf-js": { 4601 | "version": "1.0.3", 4602 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 4603 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 4604 | "dev": true 4605 | }, 4606 | "node_modules/sshpk": { 4607 | "version": "1.18.0", 4608 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", 4609 | "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", 4610 | "dev": true, 4611 | "dependencies": { 4612 | "asn1": "~0.2.3", 4613 | "assert-plus": "^1.0.0", 4614 | "bcrypt-pbkdf": "^1.0.0", 4615 | "dashdash": "^1.12.0", 4616 | "ecc-jsbn": "~0.1.1", 4617 | "getpass": "^0.1.1", 4618 | "jsbn": "~0.1.0", 4619 | "safer-buffer": "^2.0.2", 4620 | "tweetnacl": "~0.14.0" 4621 | }, 4622 | "bin": { 4623 | "sshpk-conv": "bin/sshpk-conv", 4624 | "sshpk-sign": "bin/sshpk-sign", 4625 | "sshpk-verify": "bin/sshpk-verify" 4626 | }, 4627 | "engines": { 4628 | "node": ">=0.10.0" 4629 | } 4630 | }, 4631 | "node_modules/sshpk/node_modules/assert-plus": { 4632 | "version": "1.0.0", 4633 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 4634 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 4635 | "dev": true, 4636 | "engines": { 4637 | "node": ">=0.8" 4638 | } 4639 | }, 4640 | "node_modules/stack-utils": { 4641 | "version": "1.0.5", 4642 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", 4643 | "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", 4644 | "dev": true, 4645 | "dependencies": { 4646 | "escape-string-regexp": "^2.0.0" 4647 | }, 4648 | "engines": { 4649 | "node": ">=8" 4650 | } 4651 | }, 4652 | "node_modules/stack-utils/node_modules/escape-string-regexp": { 4653 | "version": "2.0.0", 4654 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", 4655 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", 4656 | "dev": true, 4657 | "engines": { 4658 | "node": ">=8" 4659 | } 4660 | }, 4661 | "node_modules/string_decoder": { 4662 | "version": "1.1.1", 4663 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 4664 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 4665 | "dev": true, 4666 | "dependencies": { 4667 | "safe-buffer": "~5.1.0" 4668 | } 4669 | }, 4670 | "node_modules/stringstream": { 4671 | "version": "0.0.6", 4672 | "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", 4673 | "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", 4674 | "dev": true 4675 | }, 4676 | "node_modules/strip-ansi": { 4677 | "version": "3.0.1", 4678 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 4679 | "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", 4680 | "dev": true, 4681 | "dependencies": { 4682 | "ansi-regex": "^2.0.0" 4683 | }, 4684 | "engines": { 4685 | "node": ">=0.10.0" 4686 | } 4687 | }, 4688 | "node_modules/supports-color": { 4689 | "version": "2.0.0", 4690 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 4691 | "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", 4692 | "dev": true, 4693 | "engines": { 4694 | "node": ">=0.8.0" 4695 | } 4696 | }, 4697 | "node_modules/tap": { 4698 | "version": "10.7.3", 4699 | "resolved": "https://registry.npmjs.org/tap/-/tap-10.7.3.tgz", 4700 | "integrity": "sha512-oS/FIq+tcmxVgYn5usKtLsX+sOHNEj+G7JIQE9SBjO5mVYB1rbaEJJiDbnYp8k0ZqY2Pe4HbYEpkvzm9jfLDyw==", 4701 | "dev": true, 4702 | "dependencies": { 4703 | "bind-obj-methods": "^1.0.0", 4704 | "bluebird": "^3.5.1", 4705 | "clean-yaml-object": "^0.1.0", 4706 | "color-support": "^1.1.0", 4707 | "coveralls": "^2.13.3", 4708 | "foreground-child": "^1.3.3", 4709 | "fs-exists-cached": "^1.0.0", 4710 | "function-loop": "^1.0.1", 4711 | "glob": "^7.0.0", 4712 | "isexe": "^2.0.0", 4713 | "js-yaml": "^3.10.0", 4714 | "nyc": "^11.3.0", 4715 | "opener": "^1.4.1", 4716 | "os-homedir": "^1.0.2", 4717 | "own-or": "^1.0.0", 4718 | "own-or-env": "^1.0.0", 4719 | "readable-stream": "^2.3.2", 4720 | "signal-exit": "^3.0.0", 4721 | "source-map-support": "^0.4.18", 4722 | "stack-utils": "^1.0.0", 4723 | "tap-mocha-reporter": "^3.0.6", 4724 | "tap-parser": "^5.3.1", 4725 | "tmatch": "^3.1.0", 4726 | "trivial-deferred": "^1.0.1", 4727 | "tsame": "^1.1.2", 4728 | "yapool": "^1.0.0" 4729 | }, 4730 | "bin": { 4731 | "tap": "bin/run.js" 4732 | }, 4733 | "engines": { 4734 | "node": ">=0.8" 4735 | } 4736 | }, 4737 | "node_modules/tap-mocha-reporter": { 4738 | "version": "3.0.9", 4739 | "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz", 4740 | "integrity": "sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==", 4741 | "dev": true, 4742 | "dependencies": { 4743 | "color-support": "^1.1.0", 4744 | "debug": "^2.1.3", 4745 | "diff": "^1.3.2", 4746 | "escape-string-regexp": "^1.0.3", 4747 | "glob": "^7.0.5", 4748 | "js-yaml": "^3.3.1", 4749 | "tap-parser": "^5.1.0", 4750 | "unicode-length": "^1.0.0" 4751 | }, 4752 | "bin": { 4753 | "tap-mocha-reporter": "index.js" 4754 | }, 4755 | "optionalDependencies": { 4756 | "readable-stream": "^2.1.5" 4757 | } 4758 | }, 4759 | "node_modules/tap-parser": { 4760 | "version": "5.4.0", 4761 | "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz", 4762 | "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==", 4763 | "dev": true, 4764 | "dependencies": { 4765 | "events-to-array": "^1.0.1", 4766 | "js-yaml": "^3.2.7" 4767 | }, 4768 | "bin": { 4769 | "tap-parser": "bin/cmd.js" 4770 | }, 4771 | "optionalDependencies": { 4772 | "readable-stream": "^2" 4773 | } 4774 | }, 4775 | "node_modules/tmatch": { 4776 | "version": "3.1.0", 4777 | "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-3.1.0.tgz", 4778 | "integrity": "sha512-W3MSATOCN4pVu2qFxmJLIArSifeSOFqnfx9hiUaVgOmeRoI2NbU7RNga+6G+L8ojlFeQge+ZPCclWyUpQ8UeNQ==", 4779 | "dev": true 4780 | }, 4781 | "node_modules/tough-cookie": { 4782 | "version": "2.3.4", 4783 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", 4784 | "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", 4785 | "dev": true, 4786 | "dependencies": { 4787 | "punycode": "^1.4.1" 4788 | }, 4789 | "engines": { 4790 | "node": ">=0.8" 4791 | } 4792 | }, 4793 | "node_modules/trivial-deferred": { 4794 | "version": "1.1.2", 4795 | "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.1.2.tgz", 4796 | "integrity": "sha512-vDPiDBC3hyP6O4JrJYMImW3nl3c03Tsj9fEXc7Qc/XKa1O7gf5ZtFfIR/E0dun9SnDHdwjna1Z2rSzYgqpxh/g==", 4797 | "dev": true, 4798 | "engines": { 4799 | "node": ">= 8" 4800 | } 4801 | }, 4802 | "node_modules/tsame": { 4803 | "version": "1.1.2", 4804 | "resolved": "https://registry.npmjs.org/tsame/-/tsame-1.1.2.tgz", 4805 | "integrity": "sha512-ovCs24PGjmByVPr9tSIOs/yjUX9sJl0grEmOsj9dZA/UknQkgPOKcUqM84aSCvt9awHuhc/boMzTg3BHFalxWw==", 4806 | "dev": true 4807 | }, 4808 | "node_modules/tunnel-agent": { 4809 | "version": "0.4.3", 4810 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", 4811 | "integrity": "sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ==", 4812 | "dev": true, 4813 | "engines": { 4814 | "node": "*" 4815 | } 4816 | }, 4817 | "node_modules/tweetnacl": { 4818 | "version": "0.14.5", 4819 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 4820 | "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", 4821 | "dev": true 4822 | }, 4823 | "node_modules/unicode-length": { 4824 | "version": "1.0.3", 4825 | "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz", 4826 | "integrity": "sha512-rZKNhIqioUp7H49afr26tivLDCvUSqOXwmwEEnsCwnPX67S1CYbOL45Y5IP3K/XHN73/lg21HlrB8SNlYXKQTg==", 4827 | "dev": true, 4828 | "dependencies": { 4829 | "punycode": "^1.3.2", 4830 | "strip-ansi": "^3.0.1" 4831 | } 4832 | }, 4833 | "node_modules/util-deprecate": { 4834 | "version": "1.0.2", 4835 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 4836 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 4837 | "dev": true 4838 | }, 4839 | "node_modules/uuid": { 4840 | "version": "3.4.0", 4841 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 4842 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 4843 | "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 4844 | "dev": true, 4845 | "bin": { 4846 | "uuid": "bin/uuid" 4847 | } 4848 | }, 4849 | "node_modules/verror": { 4850 | "version": "1.10.0", 4851 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 4852 | "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", 4853 | "dev": true, 4854 | "engines": [ 4855 | "node >=0.6.0" 4856 | ], 4857 | "dependencies": { 4858 | "assert-plus": "^1.0.0", 4859 | "core-util-is": "1.0.2", 4860 | "extsprintf": "^1.2.0" 4861 | } 4862 | }, 4863 | "node_modules/verror/node_modules/assert-plus": { 4864 | "version": "1.0.0", 4865 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 4866 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 4867 | "dev": true, 4868 | "engines": { 4869 | "node": ">=0.8" 4870 | } 4871 | }, 4872 | "node_modules/verror/node_modules/core-util-is": { 4873 | "version": "1.0.2", 4874 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 4875 | "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", 4876 | "dev": true 4877 | }, 4878 | "node_modules/which": { 4879 | "version": "1.3.1", 4880 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 4881 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 4882 | "dev": true, 4883 | "dependencies": { 4884 | "isexe": "^2.0.0" 4885 | }, 4886 | "bin": { 4887 | "which": "bin/which" 4888 | } 4889 | }, 4890 | "node_modules/wrappy": { 4891 | "version": "1.0.2", 4892 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4893 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 4894 | "dev": true 4895 | }, 4896 | "node_modules/xtend": { 4897 | "version": "4.0.2", 4898 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 4899 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 4900 | "dev": true, 4901 | "engines": { 4902 | "node": ">=0.4" 4903 | } 4904 | }, 4905 | "node_modules/yallist": { 4906 | "version": "2.1.2", 4907 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 4908 | "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", 4909 | "dev": true 4910 | }, 4911 | "node_modules/yapool": { 4912 | "version": "1.0.0", 4913 | "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz", 4914 | "integrity": "sha512-RONBZndo8Lo8pKPfORRxr2DIk2NZKIml654o4kaIu7RXVxQCKsAN6AqrcoZsI3h+2H5YO2mD/04Wy4LbAgd+Pg==", 4915 | "dev": true 4916 | } 4917 | } 4918 | } 4919 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "Isaac Z. Schlueter (http://blog.izs.me/)", 3 | "name": "touch", 4 | "description": "like touch(1) in node", 5 | "version": "3.1.1", 6 | "repository": "git://github.com/isaacs/node-touch.git", 7 | "bin": { 8 | "nodetouch": "./bin/nodetouch.js" 9 | }, 10 | "license": "ISC", 11 | "scripts": { 12 | "test": "tap test/*.js --100 -J", 13 | "preversion": "npm test", 14 | "postversion": "npm publish", 15 | "postpublish": "git push origin --all; git push origin --tags" 16 | }, 17 | "devDependencies": { 18 | "mutate-fs": "^1.1.0", 19 | "tap": "^10.7.0" 20 | }, 21 | "files": [ 22 | "index.js", 23 | "bin/nodetouch.js" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /test/basic.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const fs = require("fs") 3 | const touch = require("../") 4 | const t = require('tap') 5 | const mutateFS = require('mutate-fs') 6 | 7 | const _ = fn => er => { 8 | if (er) 9 | throw er 10 | fn() 11 | } 12 | 13 | const files = [ 14 | 'sync', 15 | 'sync-ref', 16 | 'async', 17 | 'async-ref' 18 | ] 19 | 20 | files.forEach(f => { 21 | try { fs.unlinkSync(f) } catch (e) {} 22 | }) 23 | 24 | const dirs = [ 25 | 'dir-sync', 26 | 'dir-async' 27 | ] 28 | 29 | dirs.forEach(d => { 30 | try { fs.rmdirSync(d) } catch (e) {} 31 | try { fs.mkdirSync(d) } catch (e) {} 32 | }) 33 | 34 | const now = Date.now() 35 | const then = now - 1000000000 // now - 1Msec 36 | 37 | t.teardown(() => { 38 | files.forEach(f => { 39 | try { fs.unlinkSync(f) } catch (e) {} 40 | }) 41 | }) 42 | 43 | t.test('set both to now', t => { 44 | touch.sync("sync") 45 | touch("async", _(() => { 46 | const astat = fs.statSync("async") 47 | const sstat = fs.statSync("sync") 48 | const asa = astat.atime.getTime() 49 | const ssa = sstat.atime.getTime() 50 | const asm = astat.mtime.getTime() 51 | const ssm = sstat.mtime.getTime() 52 | 53 | // can actually end up a few ms apart on systems with support 54 | // for subsecond stat times. 55 | t.equal(Math.abs(asm - asa) < 1000, true) 56 | t.equal(Math.abs(ssm - ssa) < 1000, true) 57 | t.equal(Math.abs(ssa - now) < 1000, true) 58 | t.equal(Math.abs(asa - now) < 1000, true) 59 | 60 | // ctime should always be now-ish 61 | t.ok(Math.abs(Date.now() - sstat.ctime.getTime()) < 10000) 62 | t.ok(Math.abs(Date.now() - astat.ctime.getTime()) < 10000) 63 | t.end() 64 | })) 65 | }) 66 | 67 | t.test('set both to now, using futimes', t => { 68 | const runTest = closeAfter => { 69 | t.test('closeAfter=' + closeAfter, t => { 70 | const sfd = fs.openSync('sync', 'w') 71 | 72 | if (closeAfter) { 73 | touch.ftouchSync(sfd, { closeAfter: true }) 74 | } else { 75 | touch.ftouchSync(sfd) 76 | fs.closeSync(sfd) 77 | } 78 | 79 | const afd = fs.openSync('async', 'w') 80 | t.equal(afd, sfd) 81 | 82 | const then = _(() => { 83 | if (!closeAfter) { 84 | fs.closeSync(afd) 85 | } 86 | 87 | const astat = fs.statSync("async") 88 | const sstat = fs.statSync("sync") 89 | const asa = astat.atime.getTime() 90 | const ssa = sstat.atime.getTime() 91 | const asm = astat.mtime.getTime() 92 | const ssm = sstat.mtime.getTime() 93 | 94 | t.equal(asm, asa) 95 | t.equal(ssm, ssa) 96 | 97 | // atime should always be now-ish 98 | t.ok(Math.abs(Date.now() - sstat.atime.getTime()) < 1000) 99 | t.ok(Math.abs(Date.now() - astat.atime.getTime()) < 1000) 100 | 101 | // ctime should always be now-ish 102 | t.ok(Math.abs(Date.now() - sstat.ctime.getTime()) < 1000) 103 | t.ok(Math.abs(Date.now() - astat.ctime.getTime()) < 1000) 104 | }) 105 | 106 | if (closeAfter) { 107 | return touch.ftouch(afd, {closeAfter: true}).then(then) 108 | } else { 109 | return touch.ftouch(afd, then) 110 | } 111 | }) 112 | } 113 | 114 | runTest(true) 115 | runTest(false) 116 | t.end() 117 | }) 118 | 119 | t.test('set both to now - 1Msec', t => { 120 | // also use force, just for funsies 121 | touch.sync("sync", { time: then, force: true }) 122 | touch("async", { time: then, force: true }, _(() => { 123 | const astat = fs.statSync("async") 124 | const sstat = fs.statSync("sync") 125 | const asa = astat.atime.getTime() 126 | const ssa = sstat.atime.getTime() 127 | const asm = astat.mtime.getTime() 128 | const ssm = sstat.mtime.getTime() 129 | 130 | t.notEqual(asm, now) 131 | t.equal(asa, asm) 132 | 133 | t.notEqual(ssm, now) 134 | t.equal(ssa, ssm) 135 | 136 | t.equal(ssa, then) 137 | t.equal(asa, then) 138 | 139 | t.ok(Math.abs(Date.now() - sstat.ctime.getTime()) < 1000) 140 | t.ok(Math.abs(Date.now() - astat.ctime.getTime()) < 1000) 141 | t.end() 142 | })) 143 | }) 144 | 145 | t.test('set both to now - 1Msec (dirs)', t => { 146 | // Touch dirs using a time in the past because they were just created. 147 | touch.sync("dir-sync", { time: then }) 148 | touch("dir-async", { time: then }, _(() => { 149 | const astat = fs.statSync("dir-async") 150 | const sstat = fs.statSync("dir-sync") 151 | const asa = astat.atime.getTime() 152 | const ssa = sstat.atime.getTime() 153 | const asm = astat.mtime.getTime() 154 | const ssm = sstat.mtime.getTime() 155 | 156 | t.notEqual(asm, now) 157 | t.equal(asa, asm) 158 | 159 | t.notEqual(ssm, now) 160 | t.equal(ssa, ssm) 161 | 162 | t.equal(ssa, then) 163 | t.equal(asa, then) 164 | 165 | t.ok(Math.abs(Date.now() - sstat.ctime.getTime()) < 1000) 166 | t.ok(Math.abs(Date.now() - astat.ctime.getTime()) < 1000) 167 | t.end() 168 | })) 169 | }) 170 | 171 | t.test('set mtime to now', t => { 172 | touch.sync("sync", { time: now, mtime: true }) 173 | touch("async", { time: now, mtime: true }, _(() => { 174 | const astat = fs.statSync("async") 175 | const sstat = fs.statSync("sync") 176 | const asa = astat.atime.getTime() 177 | const ssa = sstat.atime.getTime() 178 | const asm = astat.mtime.getTime() 179 | const ssm = sstat.mtime.getTime() 180 | 181 | t.notEqual(asa, asm) 182 | t.notEqual(ssa, ssm) 183 | 184 | t.equal(ssa, then) 185 | t.equal(asa, then) 186 | 187 | t.equal(ssm, now) 188 | t.equal(asm, now) 189 | 190 | t.ok(Math.abs(Date.now() - sstat.ctime.getTime()) < 1000) 191 | t.ok(Math.abs(Date.now() - astat.ctime.getTime()) < 1000) 192 | t.end() 193 | })) 194 | }) 195 | 196 | t.test('set mtime to now (dirs)', t => { 197 | touch.sync("dir-sync", { time: now, mtime: true }) 198 | touch("dir-async", { time: now, mtime: true }, _(() => { 199 | const astat = fs.statSync("dir-async") 200 | const sstat = fs.statSync("dir-sync") 201 | const asa = astat.atime.getTime() 202 | const ssa = sstat.atime.getTime() 203 | const asm = astat.mtime.getTime() 204 | const ssm = sstat.mtime.getTime() 205 | 206 | t.notEqual(asa, asm) 207 | t.notEqual(ssa, ssm) 208 | 209 | t.equal(ssa, then) 210 | t.equal(asa, then) 211 | 212 | t.equal(ssm, now) 213 | t.equal(asm, now) 214 | 215 | t.ok(Math.abs(Date.now() - sstat.ctime.getTime()) < 1000) 216 | t.ok(Math.abs(Date.now() - astat.ctime.getTime()) < 1000) 217 | t.end() 218 | })) 219 | }) 220 | 221 | t.test('set atime to now', t => { 222 | touch.sync("sync", { time: now, atime: true }) 223 | touch("async", { time: now, atime: true }, _(() => { 224 | const astat = fs.statSync("async") 225 | const sstat = fs.statSync("sync") 226 | const asa = astat.atime.getTime() 227 | const ssa = sstat.atime.getTime() 228 | const asm = astat.mtime.getTime() 229 | const ssm = sstat.mtime.getTime() 230 | 231 | t.equal(asm, now) 232 | t.equal(ssm, now) 233 | 234 | t.equal(asa, now) 235 | t.equal(ssa, now) 236 | 237 | t.ok(Math.abs(Date.now() - sstat.ctime.getTime()) < 1000) 238 | t.ok(Math.abs(Date.now() - astat.ctime.getTime()) < 1000) 239 | t.end() 240 | })) 241 | }) 242 | 243 | t.test('set atime to now (dirs)', t => { 244 | touch.sync("dir-sync", { time: now, atime: true }) 245 | touch("dir-async", { time: now, atime: true }, _(() => { 246 | const astat = fs.statSync("dir-async") 247 | const sstat = fs.statSync("dir-sync") 248 | const asa = astat.atime.getTime() 249 | const ssa = sstat.atime.getTime() 250 | const asm = astat.mtime.getTime() 251 | const ssm = sstat.mtime.getTime() 252 | 253 | t.equal(asm, now) 254 | t.equal(ssm, now) 255 | 256 | t.equal(asa, now) 257 | t.equal(ssa, now) 258 | 259 | t.ok(Math.abs(Date.now() - sstat.ctime.getTime()) < 1000) 260 | t.ok(Math.abs(Date.now() - astat.ctime.getTime()) < 1000) 261 | t.end() 262 | })) 263 | }) 264 | 265 | t.test('nocreate should not throw on ENOENT', t => { 266 | touch.sync('sync-noent', { nocreate: true }) 267 | t.throws(() => fs.statSync('sync-noent')) 268 | return touch('async-noent', { nocreate: true }).then(() => 269 | t.throws(() => fs.statSync('async-noent'))) 270 | }) 271 | 272 | t.test('use one file as ref for another, only mtime', t => { 273 | fs.writeFileSync('sync-ref', '') 274 | fs.writeFileSync('async-ref', '') 275 | fs.writeFileSync('sync', '') 276 | fs.writeFileSync('async', '') 277 | 278 | fs.utimesSync('sync-ref', then/1000, then/1000) 279 | fs.utimesSync('async-ref', then/1000, then/1000) 280 | fs.utimesSync('sync', now, now) 281 | fs.utimesSync('async', now, now) 282 | 283 | touch.sync('sync-ref', { ref: 'sync', mtime: true }) 284 | touch('async-ref', { ref: 'async', mtime: true }, _(() => { 285 | const astat = fs.statSync("async") 286 | const sstat = fs.statSync("sync") 287 | const arstat = fs.statSync('async-ref') 288 | const srstat = fs.statSync('sync-ref') 289 | 290 | const asa = astat.atime.getTime() 291 | const ssa = sstat.atime.getTime() 292 | const arsa = arstat.atime.getTime() 293 | const srsa = srstat.atime.getTime() 294 | 295 | const asm = astat.mtime.getTime() 296 | const ssm = sstat.mtime.getTime() 297 | const arsm = arstat.mtime.getTime() 298 | const srsm = srstat.mtime.getTime() 299 | 300 | const arsc = arstat.ctime.getTime() 301 | const srsc = srstat.ctime.getTime() 302 | 303 | t.equal(asm, arsm) 304 | t.equal(ssm, srsm) 305 | 306 | t.not(asa, arsa) 307 | t.not(ssa, srsa) 308 | 309 | t.ok(Math.abs(Date.now() - srsc) < 1000) 310 | t.ok(Math.abs(Date.now() - arsc) < 1000) 311 | t.end() 312 | })) 313 | }) 314 | 315 | t.test('use one file as ref for another', t => { 316 | fs.writeFileSync('sync-ref', '') 317 | fs.writeFileSync('async-ref', '') 318 | fs.writeFileSync('sync', '') 319 | fs.writeFileSync('async', '') 320 | 321 | fs.utimesSync('sync-ref', then, then) 322 | fs.utimesSync('async-ref', then, then) 323 | fs.utimesSync('sync', now, now) 324 | fs.utimesSync('async', now, now) 325 | 326 | touch.sync('sync-ref', { ref: 'sync' }) 327 | touch('async-ref', { ref: 'async' }, _(() => { 328 | const astat = fs.statSync("async") 329 | const sstat = fs.statSync("sync") 330 | const arstat = fs.statSync('async-ref') 331 | const srstat = fs.statSync('sync-ref') 332 | 333 | const asa = astat.atime.getTime() 334 | const ssa = sstat.atime.getTime() 335 | const arsa = arstat.atime.getTime() 336 | const srsa = srstat.atime.getTime() 337 | 338 | const asm = astat.mtime.getTime() 339 | const ssm = sstat.mtime.getTime() 340 | const arsm = arstat.mtime.getTime() 341 | const srsm = srstat.mtime.getTime() 342 | 343 | const arsc = arstat.ctime.getTime() 344 | const srsc = srstat.ctime.getTime() 345 | 346 | t.equal(asm, arsm) 347 | t.equal(ssm, srsm) 348 | 349 | t.equal(asa, arsa) 350 | t.equal(ssa, srsa) 351 | 352 | t.ok(Math.abs(Date.now() - srsc) < 1000) 353 | t.ok(Math.abs(Date.now() - arsc) < 1000) 354 | t.end() 355 | })) 356 | }) 357 | 358 | t.test('fstat fail', t => { 359 | const poop = new Error('poop') 360 | const unmutate = mutateFS.fail('fstat', poop) 361 | const fd = fs.openSync('sync', 'r') 362 | 363 | t.teardown(() => { 364 | unmutate() 365 | fs.closeSync(fd) 366 | }) 367 | 368 | t.throws(() => { 369 | touch.ftouchSync(fd, { time: now, atime: true }) 370 | }, poop) 371 | 372 | touch.ftouch(fd, { time: now, atime: true }).catch(er => { 373 | t.equal(er, poop) 374 | t.end() 375 | }) 376 | }) 377 | 378 | t.test('futimes fail', t => { 379 | const poop = new Error('poop') 380 | const unmutate = mutateFS.fail('futimes', poop) 381 | const fd = fs.openSync('sync', 'r') 382 | 383 | t.teardown(() => { 384 | unmutate() 385 | fs.closeSync(fd) 386 | }) 387 | 388 | t.throws(() => { 389 | touch.ftouchSync(fd) 390 | }, poop) 391 | 392 | touch.ftouch(fd, er => { 393 | t.equal(er, poop) 394 | t.end() 395 | }) 396 | }) 397 | 398 | t.test('futimes fail, close after', t => { 399 | const poop = new Error('poop') 400 | touch.sync('sync') 401 | const unmutate = mutateFS.fail('futimes', poop) 402 | const fd = fs.openSync('sync', 'r') 403 | const close = fs.close 404 | const closeSync = fs.closeSync 405 | 406 | let closes = 0 407 | let closeSyncs = 0 408 | fs.close = () => { 409 | closes ++ 410 | } 411 | fs.closeSync = () => { 412 | closeSyncs ++ 413 | } 414 | 415 | t.teardown(() => { 416 | unmutate() 417 | fs.close = close 418 | fs.closeSync = closeSync 419 | fs.closeSync(fd) 420 | }) 421 | 422 | t.throws(() => { 423 | touch.ftouchSync(fd, { closeAfter: true }) 424 | }, poop) 425 | 426 | touch.ftouch(fd, { closeAfter: true }, er => { 427 | t.equal(er, poop) 428 | t.equal(closes, 1, '1 close') 429 | t.equal(closeSyncs, 1, '1 closeSync') 430 | t.end() 431 | }) 432 | 433 | }) 434 | 435 | t.test('ref stat fail', t => { 436 | const poop = new Error('poop') 437 | t.teardown(mutateFS.fail('stat', poop)) 438 | 439 | t.throws(() => { 440 | touch.touchSync('sync', { ref: 'sync-ref' }) 441 | }, poop) 442 | 443 | touch('async', { ref: 'async-ref' }, er => { 444 | t.equal(er, poop) 445 | t.end() 446 | }) 447 | }) 448 | 449 | t.test('open fail', t => { 450 | const poop = new Error('poop') 451 | t.teardown(mutateFS.fail('open', poop)) 452 | t.throws(() => touch.sync('sync')) 453 | return touch('async').then(() => t.fail('should fail'), er => 454 | t.equal(er, poop)) 455 | }) 456 | -------------------------------------------------------------------------------- /test/bin.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const t = require('tap') 3 | const bin = require.resolve('../bin/nodetouch.js') 4 | const node = process.execPath 5 | const spawn = require('child_process').spawn 6 | const fs = require('fs') 7 | 8 | const exec = args => new Promise(resolve => { 9 | const child = spawn(node, [bin].concat(args)) 10 | const out = [] 11 | child.stdout.on('data', c => out.push(c)) 12 | const err = [] 13 | child.stderr.on('data', c => err.push(c)) 14 | child.on('close', (code, signal) => 15 | resolve([code, signal, Buffer.concat(out).toString(), 16 | Buffer.concat(err).toString()])) 17 | }) 18 | 19 | t.test('no args, print usage', t => 20 | exec([]).then(res => 21 | t.match(res, [0, null, /^usage:\ntouch/, '']))) 22 | 23 | t.test('bad args, print usage and fail', t => 24 | exec(['-aw3eawefase']).then(res => 25 | t.match(res, [1, null, '', /^touch: illegal option -- -w\nusage:\ntouch/]))) 26 | 27 | t.test('bad time, print usage and fail', t => 28 | exec(['-tasdf']).then(res => 29 | t.match(res, [1, null, '', 30 | 'touch: out of range or illegal time specification:' + 31 | ' [[CC]YY]MMDDhhmm[.SS]' 32 | ]))) 33 | 34 | t.test('no touching null', t => 35 | exec(['/dev/null']).then(res => 36 | t.match(res, [1, null, '', '']))) 37 | 38 | t.test('nocreate, no problem', t => Promise.all([ 39 | t.test('-c', t => 40 | exec(['-c', 'flurple']).then(res => 41 | t.match(res, [0, null, '', '']))), 42 | t.test('--nocreate', t => 43 | exec(['--nocreate', 'flurple']).then(res => 44 | t.match(res, [0, null, '', '']))) 45 | ])) 46 | 47 | t.test('mtime only', t => { 48 | const file = 'asdf3f2a' 49 | const time = new Date(Date.UTC(1979, 6, 1, 17, 10, 0, 0)).toISOString() 50 | const n = '7907011710.00' 51 | const check = t => { 52 | const st = fs.statSync(file) 53 | t.equal(st.mtime.toISOString(), time) 54 | t.notEqual(st.atime.toISOString(), time) 55 | fs.unlinkSync(file) 56 | } 57 | 58 | return Promise.all([ 59 | t.test('-m', t => exec(['--time=' + n, '-m', file]).then(res => 60 | (t.match(res, [0, null, '', '']), 61 | check(t)))), 62 | t.test('--mtime', t => exec(['-t', n, '--mtime', file]).then(res => 63 | (t.match(res, [0, null, '', '']), 64 | check(t)))) 65 | ]) 66 | }) 67 | 68 | t.test('mtime and atime', t => { 69 | const file = 'asdf3f2a' 70 | const time = new Date(Date.UTC(1979, 6, 1, 17, 10, 0, 0)).toISOString() 71 | const n = '197907011710.00' 72 | const check = t => { 73 | const st = fs.statSync(file) 74 | t.equal(st.mtime.toISOString(), time) 75 | t.equal(st.atime.toISOString(), time) 76 | fs.unlinkSync(file) 77 | } 78 | 79 | return Promise.all([ 80 | t.test('-m', t => exec(['--time=' + n, '-a', '--mtime', file]).then(res => 81 | (t.match(res, [0, null, '', '']), 82 | check(t)))), 83 | t.test('--mtime', t => exec(['-t', n,'--atime', '-m', file]).then(res => 84 | (t.match(res, [0, null, '', '']), 85 | check(t)))) 86 | ]) 87 | }) 88 | 89 | 90 | t.test('atime only', t => { 91 | const file = 'asdf3f2a' 92 | const time = new Date(Date.UTC(2068, 6, 1, 17, 10, 0, 0)).toISOString() 93 | const n = '6807011710.00' 94 | const check = t => { 95 | const st = fs.statSync(file) 96 | t.equal(st.mtime.toISOString(), time) 97 | t.notEqual(st.atime.toISOString(), time) 98 | fs.unlinkSync(file) 99 | } 100 | 101 | return Promise.all([ 102 | t.test('-m', t => exec(['--time=' + n, '-m', file]).then(res => 103 | (t.match(res, [0, null, '', '']), 104 | check(t)))), 105 | t.test('--mtime', t => exec(['-t', n, '--mtime', file]).then(res => 106 | (t.match(res, [0, null, '', '']), 107 | check(t)))) 108 | ]) 109 | }) 110 | 111 | t.test('ref', t => { 112 | const file = 'j38ahseas8h3f' 113 | const ref = 'refernce-fileasdfja9hf38a' 114 | t.beforeEach(() => Promise.resolve(( 115 | fs.writeFileSync(ref, 'asdf'), 116 | fs.utimesSync(ref, new Date('1979-07-01T17:10:00Z'), 117 | new Date('2011-10-05T22:10:35Z')) 118 | ))) 119 | t.afterEach(() => Promise.resolve(( 120 | fs.unlinkSync(ref), fs.unlinkSync(file)))) 121 | 122 | const check = t => { 123 | const st = fs.statSync(file) 124 | const atime = new Date('1979-07-01T17:10:00Z') 125 | const mtime = new Date('2011-10-05T22:10:35Z') 126 | t.equal(st.atime.toISOString(), atime.toISOString()) 127 | t.equal(st.mtime.toISOString(), mtime.toISOString()) 128 | } 129 | 130 | return Promise.all([ 131 | t.test('-r', t => exec(['-r' + ref, file]).then(res => 132 | (t.match(res, [0, null, '', '']), 133 | check(t)))), 134 | t.test('-r=', t => exec(['-r=' + ref, file]).then(res => 135 | (t.match(res, [0, null, '', '']), 136 | check(t)))), 137 | t.test('-r ', t => exec(['-r', ref, file]).then(res => 138 | (t.match(res, [0, null, '', '']), 139 | check(t)))), 140 | t.test('--ref=', t => exec(['--ref=' + ref, file]).then(res => 141 | (t.match(res, [0, null, '', '']), 142 | check(t)))), 143 | t.test('--ref ', t => exec(['--ref', ref, file]).then(res => 144 | (t.match(res, [0, null, '', '']), 145 | check(t)))) 146 | ]) 147 | }) 148 | --------------------------------------------------------------------------------