├── OSSMETADATA ├── .npmrc ├── bin └── index.js ├── examples ├── echo.sh ├── template.sh ├── mac-addresses.sh ├── os.sh ├── appinfo.sh └── applications.sh ├── src ├── commands │ ├── trim.js │ ├── as.js │ ├── split.js │ ├── default-to.js │ ├── echo.js │ ├── remove.js │ ├── lines.js │ ├── map.js │ ├── parse-int.js │ ├── parse-date.js │ ├── load.js │ ├── path-resolve.js │ ├── debug.js │ ├── print.js │ ├── cat.js │ ├── save.js │ ├── template.js │ ├── try-exec.js │ ├── contains.js │ ├── no-empty.js │ ├── pipe.js │ ├── extract.js │ ├── bool-match.js │ ├── exec.js │ └── index.js ├── debug.js ├── cli.js ├── simple-template.js ├── indentation.js └── index.js ├── .gitignore ├── README.md ├── test └── basic-execution.js ├── package.json ├── benchmark.js ├── LICENSE └── yarn.lock /OSSMETADATA: -------------------------------------------------------------------------------- 1 | osslifecycle=active 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmjs.org/ 2 | -------------------------------------------------------------------------------- /bin/index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | require('../src/cli') 3 | -------------------------------------------------------------------------------- /examples/echo.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env kmd 2 | echo hi 3 | save message 4 | -------------------------------------------------------------------------------- /src/commands/trim.js: -------------------------------------------------------------------------------- 1 | module.exports = () => (str) => str.trim() 2 | -------------------------------------------------------------------------------- /src/commands/as.js: -------------------------------------------------------------------------------- 1 | module.exports = (key) => (value) => ({ [key]: value }) 2 | -------------------------------------------------------------------------------- /src/commands/split.js: -------------------------------------------------------------------------------- 1 | module.exports = (delim) => (str) => str.split(delim) 2 | -------------------------------------------------------------------------------- /src/commands/default-to.js: -------------------------------------------------------------------------------- 1 | module.exports = defaultVal => str => str || defaultVal 2 | -------------------------------------------------------------------------------- /src/commands/echo.js: -------------------------------------------------------------------------------- 1 | module.exports = (defaultStr) => (str) => str || defaultStr 2 | -------------------------------------------------------------------------------- /src/commands/remove.js: -------------------------------------------------------------------------------- 1 | module.exports = (key) => function() { 2 | delete this[key] 3 | } 4 | -------------------------------------------------------------------------------- /src/commands/lines.js: -------------------------------------------------------------------------------- 1 | const split = require('./split') 2 | module.exports = () => split(/\r?\n/) 3 | -------------------------------------------------------------------------------- /src/commands/map.js: -------------------------------------------------------------------------------- 1 | const map = (fn) => async (items) => await Promise.all(items.map(await fn)) 2 | module.exports = map 3 | -------------------------------------------------------------------------------- /src/commands/parse-int.js: -------------------------------------------------------------------------------- 1 | const parseInteger = (base = 10) => (str) => parseInt(str, base) 2 | module.exports = parseInteger 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | tmp 4 | dist 5 | 6 | # Metatron decrypted secrets 7 | root 8 | **/metatron/decrypted 9 | -------------------------------------------------------------------------------- /examples/template.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env kmd 2 | echo Jesse 3 | save name.first 4 | template Hi there, {name.first}! 5 | save greeting 6 | remove name 7 | -------------------------------------------------------------------------------- /src/debug.js: -------------------------------------------------------------------------------- 1 | const debug = require('debug') 2 | 3 | const customDebug = (prefix) => debug(`kmd:${prefix}`) 4 | 5 | module.exports = customDebug 6 | -------------------------------------------------------------------------------- /src/commands/parse-date.js: -------------------------------------------------------------------------------- 1 | const fecha = require('fecha') 2 | const parseDate = (format) => (str) => str && fecha.parse(str, format) 3 | module.exports = parseDate 4 | -------------------------------------------------------------------------------- /src/commands/load.js: -------------------------------------------------------------------------------- 1 | const dotProp = require('dot-prop') 2 | 3 | const load = (key) => function() { 4 | return dotProp.get(this, key) 5 | } 6 | 7 | module.exports = load 8 | -------------------------------------------------------------------------------- /src/commands/path-resolve.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const basePath = process.env.FILE_BASE_PATH || '' 3 | 4 | module.exports = userPath => () => path.resolve(basePath + userPath) 5 | -------------------------------------------------------------------------------- /src/commands/debug.js: -------------------------------------------------------------------------------- 1 | const print = (prefix) => function(input) { 2 | if (prefix) console.error("-- "+prefix) 3 | console.error(" input:", input, "\n data:", this) 4 | return input 5 | } 6 | 7 | module.exports = print 8 | -------------------------------------------------------------------------------- /src/commands/print.js: -------------------------------------------------------------------------------- 1 | const load = require('./load') 2 | module.exports = function (key) { 3 | const loader = load(key) 4 | return function(input) { 5 | const val = loader.call(this) 6 | console.error(`${key}:`, val) 7 | return input 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/commands/cat.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs-extra') 2 | // TODO use exec instead, which might delegate to shell.js? 3 | const cat = () => (filename) => { 4 | return fs.readFile(filename, 'utf8').catch(err => console.error('error reading file:', err)) 5 | } 6 | 7 | module.exports = cat 8 | -------------------------------------------------------------------------------- /examples/mac-addresses.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env kmd 2 | exec networksetup -listallhardwareports 3 | trim 4 | split \n\n 5 | save line 6 | extract Device:\s+\w+[^:]+:\s+([0-9a-f:]+) 7 | save addr 8 | load line 9 | extract Device:\s+(\w+) 10 | save device 11 | remove line 12 | noEmpty 13 | save macAddresses 14 | -------------------------------------------------------------------------------- /src/commands/save.js: -------------------------------------------------------------------------------- 1 | const dotProp = require('dot-prop') 2 | 3 | const save = (key) => { 4 | // need this function syntax to get the right this binding 5 | return function(value) { 6 | if (!value) return 7 | dotProp.set(this, key, value) 8 | return value 9 | } 10 | } 11 | 12 | module.exports = save 13 | -------------------------------------------------------------------------------- /examples/os.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env kmd 2 | exec sw_vers 3 | save output 4 | extract ProductVersion:\s*(\S+) 5 | # print version 6 | save system.version 7 | 8 | load output 9 | extract BuildVersion:\s*(\S+) 10 | save system.build 11 | 12 | load output 13 | extract ProductName:\s*(.*) 14 | save system.platform 15 | remove output 16 | -------------------------------------------------------------------------------- /src/commands/template.js: -------------------------------------------------------------------------------- 1 | const simpleTemplate = require('../simple-template') 2 | 3 | const template = (templateString) => { 4 | return function(vars) { 5 | const data = typeof vars === 'string' ? { input: vars } : vars 6 | return simpleTemplate(templateString, Object.assign({}, this, data)) 7 | } 8 | } 9 | 10 | module.exports = template 11 | -------------------------------------------------------------------------------- /src/commands/try-exec.js: -------------------------------------------------------------------------------- 1 | const defaultExec = require('./exec') 2 | 3 | module.exports = defaultShellStr => async shellStr => { 4 | try { 5 | const stdout = await defaultExec(defaultShellStr)(shellStr) 6 | return stdout 7 | } catch (e) { 8 | // don't complete hide the error 9 | console.error(e) 10 | return '' 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/commands/contains.js: -------------------------------------------------------------------------------- 1 | const contains = (opts) => { 2 | if (typeof opts === 'string') opts = { regex: new RegExp(opts) } 3 | else if (opts.constructor.name === 'RegExp') opts = { regex: opts } 4 | let { regex } = opts 5 | return (str) => { 6 | if (!str) return null 7 | return str.match(regex) ? 'true' : 'false' 8 | } 9 | } 10 | 11 | module.exports = contains 12 | -------------------------------------------------------------------------------- /src/commands/no-empty.js: -------------------------------------------------------------------------------- 1 | const noEmpty = () => (items) => { 2 | return items 3 | .filter(item => { 4 | const included = (item !== null && 5 | typeof item !== 'undefined' && 6 | (typeof item !== 'object' || Object.keys(item).length > 0) && 7 | (typeof item !== 'string' || item.length > 0)) 8 | return included 9 | }) 10 | } 11 | 12 | module.exports = noEmpty 13 | -------------------------------------------------------------------------------- /examples/appinfo.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env kmd 2 | exec lsappinfo list 3 | split \n\n 4 | save info 5 | extract "([^"]+) 6 | save name 7 | 8 | load info 9 | extract =\s?([\d]{4}\/[\d]{2}\/[\d]{2}\s[\d]{2}:[\d]{2}:[\d]{2}) 10 | parseDate YYYY/MM/DD hh:mm:ss 11 | save lastOpened 12 | # print lastOpened 13 | # print name 14 | 15 | load info 16 | extract bundleID="([^"]+) 17 | save bundle 18 | 19 | remove info 20 | save apps 21 | -------------------------------------------------------------------------------- /src/cli.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs-extra') 2 | const { runScript } = require('./index') 3 | const extend = require('extend') 4 | 5 | const args = process.argv.slice(2) 6 | 7 | const files = args 8 | Promise.all(files.map(f => { 9 | return fs.readFile(f, 'utf8') 10 | .then(script => runScript(script)) 11 | .catch(console.error) 12 | })).then(results => { 13 | if (results.length === 1) return results[0] 14 | return extend(true, {}, ...results) 15 | }).then(obj => console.log(JSON.stringify(obj))) 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # kmd 2 | 3 | ## Installation 4 | 5 | `npm i -g kmd-script` 6 | 7 | ## Usage 8 | 9 | `kmd some-script.sh [another-script.sh]` 10 | 11 | ## Examples 12 | 13 | On a Mac, try `kmd examples/os.sh examples/mac-addresses.sh` 14 | 15 | ### Setting env vars (e.g. base file path when using `pathResolve` command) 16 | 17 | ```js 18 | const { run, compile, setKmdEnv } = require('kmd-script') 19 | 20 | setKmdEnv({ 21 | BASE_FILE_PATH: '/some/path' 22 | }) 23 | 24 | compile(...) 25 | run(...) 26 | ``` 27 | -------------------------------------------------------------------------------- /src/commands/pipe.js: -------------------------------------------------------------------------------- 1 | const debug = require('../debug')('pipe') 2 | 3 | const pipe = (...fns) => { 4 | return async (input) => { 5 | let data = {} 6 | let lastResult = input 7 | for (const fn of fns) { 8 | // debug("calling", fn) 9 | lastResult = await fn.call(data, lastResult) 10 | debug(" intermediate result:", lastResult) 11 | debug(" intermediate data", data) 12 | } 13 | return Object.keys(data).length === 0 ? lastResult : data 14 | } 15 | } 16 | 17 | module.exports = pipe 18 | -------------------------------------------------------------------------------- /src/commands/extract.js: -------------------------------------------------------------------------------- 1 | const extract = (opts) => { 2 | if (typeof opts === 'string') opts = { regex: new RegExp(opts) } 3 | else if (opts.constructor.name === 'RegExp') opts = { regex: opts } 4 | let { regex, match, as } = opts 5 | if (typeof match === 'undefined') { 6 | if (regex.source.includes('(')) match = 1 7 | else match = 0 8 | } 9 | return (str) => { 10 | if (!str) return null 11 | const m = str.match(regex) 12 | if (m && m[match]) return m[match] 13 | } 14 | } 15 | 16 | module.exports = extract 17 | -------------------------------------------------------------------------------- /src/commands/bool-match.js: -------------------------------------------------------------------------------- 1 | const boolMatch = (opts) => { 2 | if (typeof opts === 'string') opts = { regex: new RegExp(opts) } 3 | else if (opts.constructor.name === 'RegExp') opts = { regex: opts } 4 | let { regex, match } = opts 5 | if (typeof match === 'undefined') { 6 | if (regex.source.includes('(')) match = 1 7 | else match = 0 8 | } 9 | 10 | return (str) => { 11 | if (!str) return false 12 | const m = str.match(regex) 13 | if (m && m[match]) return true 14 | } 15 | } 16 | 17 | module.exports = boolMatch 18 | -------------------------------------------------------------------------------- /src/simple-template.js: -------------------------------------------------------------------------------- 1 | const dotProp = require('dot-prop') 2 | 3 | const render = (template, data) => { 4 | return template.replace( 5 | /\{([^}]*)\}/g, // or /{(\w*)}/g for "{this} instead of %this%" 6 | function( m, key ){ 7 | const val = dotProp.get(data, key) 8 | return val || "" 9 | } 10 | ) 11 | } 12 | 13 | module.exports = render 14 | 15 | if (require.main === module) { 16 | console.log(render('Hi {name}!', { name: 'Fred' })) 17 | console.log(render('Hi {name.first}!', { name: { first: 'Fred' }})) 18 | } 19 | -------------------------------------------------------------------------------- /examples/applications.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env kmd 2 | exec ls -d /Applications/*.app 3 | lines 4 | as app 5 | template {app}/Contents/Info.plist 6 | # some of these are (partially?) binary, so heads up 7 | cat 8 | save file 9 | 10 | extract CFBundleName<\/key>\s+([^<]+)<\/string> 11 | save name 12 | 13 | template lsappinfo info -app {name} 14 | exec 15 | extract =\s?([\d]{4}\/[\d]{2}\/[\d]{2}\s[\d]{2}:[\d]{2}:[\d]{2}) 16 | parseDate YYYY/MM/DD hh:mm:ss 17 | save lastOpened 18 | 19 | load file 20 | extract CFBundleDisplayName<\/key>\s+([^<]+)<\/string> 21 | save displayName 22 | 23 | load file 24 | extract CFBundleShortVersionString<\/key>\s+([^<]+)<\/string> 25 | save version 26 | remove file 27 | 28 | noEmpty 29 | save apps 30 | -------------------------------------------------------------------------------- /test/basic-execution.js: -------------------------------------------------------------------------------- 1 | const tap = require('tap'); 2 | const { runScript } = require('../src/index'); 3 | 4 | tap.test('basic execution', async function(t) { 5 | const script = `echo hi`; 6 | const output = await runScript(script); 7 | t.same(output, 'hi'); 8 | }); 9 | 10 | tap.test('variables in execution', async function(t) { 11 | const script = `echo hi %adj% %noun%`; 12 | const output = await runScript(script, { 13 | noun: 'friend', 14 | adj: 'fabulous', 15 | }); 16 | t.same(output, 'hi fabulous friend'); 17 | }); 18 | 19 | tap.test('variables in execution missing', async function(t) { 20 | const script = `echo hi %adj% %noun%`; 21 | const output = await runScript(script, { 22 | var: 'friend', 23 | adj: 'missing', 24 | }); 25 | t.same(output, 'hi missing %noun%'); 26 | }); 27 | -------------------------------------------------------------------------------- /src/commands/exec.js: -------------------------------------------------------------------------------- 1 | const debug = require('../debug')('exec') 2 | const execa = require('execa') 3 | const parse = require('shell-quote').parse 4 | const shell = require('shelljs') 5 | 6 | // allow node binary path to be injected 7 | if (process.env.NODE_PATH) { 8 | shell.config.execPath = process.env.NODE_PATH 9 | } 10 | 11 | const exec = (defaultShellStr) => async function(shellStr) { 12 | const execStr = shellStr || defaultShellStr 13 | debug("executing", execStr) 14 | const shellCmd = parse(execStr).map(arg => typeof arg === 'object' && arg.op === 'glob' ? arg.pattern : arg) 15 | debug("parsed as:", shellCmd) 16 | const [cmd, ...args] = shellCmd 17 | // prefer shelljs if the command is supported 18 | if (shell[cmd]) { 19 | debug(`running ${cmd} with shelljs. args:`, args) 20 | const result = shell[cmd](...args) 21 | debug('result', result.stdout, typeof result.stdout) 22 | return result.stdout 23 | } else { 24 | const {stdout} = await execa(cmd, args) 25 | return stdout 26 | } 27 | } 28 | 29 | module.exports = exec 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kmd-script", 3 | "version": "0.0.10", 4 | "description": "A weird little scripting language", 5 | "homepage": "https://github.com/Netflix-Skunkworks/kmd", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/Netflix-Skunkworks/kmd.git" 9 | }, 10 | "main": "src/index.js", 11 | "bin": { 12 | "kmd": "bin/index.js" 13 | }, 14 | "scripts": { 15 | "build": "shx rm -r dist/* ; ncc build src/cli.js -o dist ; terser --verbose dist/index.js -o dist/index.min.js ; shx rm dist/index.js", 16 | "test": "faucet test/*", 17 | "benchmark": "node benchmark.js" 18 | }, 19 | "author": "Jesse Kriss ", 20 | "license": "Apache-2.0", 21 | "dependencies": { 22 | "debug": "^4.1.1", 23 | "dot-prop": "^4.2.0", 24 | "execa": "^1.0.0", 25 | "extend": "^3.0.2", 26 | "fecha": "^3.0.2", 27 | "fs-extra": "^7.0.1", 28 | "shell-quote": "^1.6.1", 29 | "shelljs": "^0.8.3" 30 | }, 31 | "devDependencies": { 32 | "benchmark": "^2.1.4", 33 | "faucet": "0.0.1", 34 | "microtime": "^2.1.8", 35 | "ncc": "^0.3.6", 36 | "shx": "^0.3.2", 37 | "tap": "^12.1.1", 38 | "terser": "^3.14.1", 39 | "tiny-human-time": "^1.2.0" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/commands/index.js: -------------------------------------------------------------------------------- 1 | const as = require('./as') 2 | const boolMatch = require('./bool-match') 3 | const cat = require('./cat') 4 | const contains = require('./contains') 5 | const debug = require('./debug') 6 | const defaultTo = require('./default-to') 7 | const echo = require('./echo') 8 | const exec = require('./exec') 9 | const extract = require('./extract') 10 | const lines = require('./lines') 11 | const load = require('./load') 12 | const map = require('./map') 13 | const noEmpty = require('./no-empty') 14 | const parseDate = require('./parse-date') 15 | const parseInt = require('./parse-int') 16 | const pathResolve = require('./path-resolve') 17 | const pipe = require('./pipe') 18 | const print = require('./print') 19 | const remove = require('./remove') 20 | const save = require('./save') 21 | const split = require('./split') 22 | const template = require('./template') 23 | const trim = require('./trim') 24 | const tryExec = require('./try-exec') 25 | 26 | module.exports = { 27 | as, 28 | boolMatch, 29 | cat, 30 | contains, 31 | debug, 32 | defaultTo, 33 | echo, 34 | exec, 35 | extract, 36 | lines, 37 | load, 38 | map, 39 | noEmpty, 40 | parseDate, 41 | parseInt, 42 | pathResolve, 43 | pipe, 44 | print, 45 | remove, 46 | save, 47 | split, 48 | template, 49 | trim, 50 | tryExec 51 | } 52 | -------------------------------------------------------------------------------- /benchmark.js: -------------------------------------------------------------------------------- 1 | var Benchmark = require('benchmark'); 2 | var suite = new Benchmark.Suite; 3 | const humanize = require('tiny-human-time') 4 | 5 | const fs = require('fs') 6 | const { compile, run, runScript } = require('./src/index') 7 | 8 | const osScript = fs.readFileSync('examples/os.sh', 'utf8') 9 | const macAddressScript = fs.readFileSync('examples/mac-addresses.sh', 'utf8') 10 | const appInfoScript = fs.readFileSync('examples/appinfo.sh', 'utf8') 11 | 12 | const compiledOsScript = compile(osScript) 13 | const compiledMacAddressScript = compile(macAddressScript) 14 | const compiledAppInfoScript = compile(appInfoScript) 15 | 16 | // add tests 17 | suite.add('compile (os.sh)', function() { 18 | compile(osScript) 19 | }) 20 | // .add('run (os.sh)', async function() { 21 | // await run(compiledOsScript) 22 | // }) 23 | .add('runScript (os.sh)', async function() { 24 | await runScript(osScript) 25 | }) 26 | // .add('compile (mac-addresses.sh)', function() { 27 | // compile(macAddressScript) 28 | // }) 29 | // .add('run (mac-addresses.sh)', async function() { 30 | // await run(compiledMacAddressScript) 31 | // }) 32 | .add('runScript (mac-addresses.sh)', async function() { 33 | await runScript(macAddressScript) 34 | }) 35 | // .add('compile (appinfo.sh)', function() { 36 | // compile(appInfoScript) 37 | // }) 38 | // .add('run (appinfo.sh)', async function() { 39 | // await run(compiledAppInfoScript) 40 | // }) 41 | .add('runScript (appinfo.sh)', async function() { 42 | await runScript(appInfoScript) 43 | }) 44 | // add listeners 45 | .on('cycle', function(event) { 46 | console.log(String(event.target)); 47 | console.log(` mean time: ${humanize.short(event.target.stats.mean*1000)}`) 48 | // console.log("event:", event) 49 | }) 50 | .on('complete', function() { 51 | // console.log('Fastest is ' + this.filter('fastest').map('name')); 52 | }) 53 | // run async 54 | .run({ 'async': true }); 55 | -------------------------------------------------------------------------------- /src/indentation.js: -------------------------------------------------------------------------------- 1 | const getIndentation = (line) => { 2 | const m = line.match(/^(\s+)/) 3 | return m ? m[1].replace(/\t/g,' ').length/2 : 0 4 | } 5 | 6 | const parse = (lines, idx=0, result=[], lastIndent) => { 7 | while (idx < lines.length) { 8 | const line = lines[idx] 9 | // console.error('result now', result) 10 | // console.error('processing:', line) 11 | const indent = getIndentation(line) 12 | // console.error('current indent', indent, 'last indent', lastIndent) 13 | const delta = indent - lastIndent 14 | // console.error('delta:', delta) 15 | if (delta > 0) { 16 | // console.error('>>') 17 | // delegate to the next level 18 | const subsection = parse(lines, idx, [], indent) 19 | idx+= subsection.length 20 | result.push(subsection) 21 | // console.error('-- finished subsection', subsection, '--') 22 | // } else if (delta < 0) { 23 | } else if (delta < 0) { 24 | // console.error('<<') 25 | // console.error('-- bumping down --') 26 | // idx++ 27 | // lastIndent = indent-1 28 | return result 29 | } else { 30 | // console.error('handling line', idx, 'of', lines.length) 31 | result.push(line.trim()) 32 | idx++ 33 | lastIndent = indent 34 | } 35 | } 36 | return result 37 | } 38 | 39 | module.exports = parse 40 | 41 | if (require.main === module) { 42 | console.log(parse(` 43 | exec networksetup -listallhardwareports 44 | trim 45 | split 46 | save line 47 | extract Device:\s+\w+[^:]+:\s+([0-9a-f:]+) 48 | save addr 49 | load line 50 | extract Device:\s+(\w+) 51 | save device 52 | del line 53 | noEmpty 54 | save macAddresses 55 | 56 | `.trim().split('\n'))) 57 | // console.log(parse(`line 1 58 | // line 2 59 | // sub 2a 60 | // sub 2b 61 | // line 3 62 | // sub 3a 63 | // subsub 3a1 64 | // subsub 3a2 65 | // line 4 66 | // line 5 67 | // `.trim().split('\n'))) 68 | } 69 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const debug = require('./debug')('run') 2 | const fs = require('fs-extra') 3 | const vm = require('vm') 4 | const indentationParser = require('./indentation') 5 | let commands = {} 6 | let environmentSet = false 7 | 8 | const REPLACEMENT_REGEX= /%[\w\d-_]+%/g; 9 | 10 | const makeLine = (line, lineNum) => { 11 | const [cmd, ...args] = line.trim().split(/\s+/) 12 | let singleArg = args.join(' ') 13 | if (!commands[cmd]) { 14 | throw new Error(`command ${cmd} is not supported`) 15 | } 16 | if (cmd !== 'extract') { 17 | // unescape the strings 18 | singleArg = JSON.parse(`"${singleArg}"`) 19 | } 20 | return commands[cmd](singleArg) 21 | } 22 | 23 | const makeBlock = (lines, { map }={}) => { 24 | const realLines = lines.filter(line => typeof line !== 'string' || !line.match(/^\s*#/)) 25 | const fns = realLines.map(line => typeof line === 'string' ? makeLine(line) : makeBlock(line, { map: true })) 26 | if (map) { 27 | return commands.map(commands.pipe(...fns)) 28 | } else { 29 | return commands.pipe(...fns) 30 | } 31 | } 32 | 33 | /** 34 | * Sets environment variables for scripts 35 | * @param {Object} [env={}] key value pairs to set into `process.env` 36 | */ 37 | const setKmdEnv = (env = {}) => { 38 | if (Object(env) !== env) throw new Error('env param must be an object') 39 | 40 | for (let v in env) { 41 | process.env[v] = env[v] 42 | } 43 | 44 | environmentSet = true 45 | commands = require('./commands/index') 46 | } 47 | 48 | const compile = (scriptSrc, variables = {}) => { 49 | // if setKmdEnv wasn't called, load up the commands, should only be called once 50 | if (!environmentSet) setKmdEnv({}) 51 | // console.time('compile') 52 | 53 | const source = scriptSrc 54 | .trim() 55 | .replace(REPLACEMENT_REGEX, match => { 56 | const key = match.substring(1, match.length-1); 57 | return variables.hasOwnProperty(key) ? variables[key] : match 58 | }) 59 | .split('\n') 60 | .filter(line => line.trim().length > 0); 61 | 62 | const lines = indentationParser(source) 63 | const pipeline = makeBlock(lines) 64 | // console.timeEnd('compile') 65 | return pipeline 66 | } 67 | 68 | const run = async (fn, input) => { 69 | // console.time('run') 70 | const result = await fn(input) 71 | // console.timeEnd('run') 72 | return result 73 | } 74 | 75 | const runScript = (scriptSrc, variables = {}) => run(compile(scriptSrc, variables)) 76 | 77 | module.exports = { 78 | compile, 79 | run, 80 | setKmdEnv, 81 | runScript, 82 | commands 83 | } 84 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright 2018 Netflix, Inc. 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.0.0" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 8 | dependencies: 9 | "@babel/highlight" "^7.0.0" 10 | 11 | "@babel/generator@^7.0.0", "@babel/generator@^7.2.2": 12 | version "7.3.2" 13 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.2.tgz#fff31a7b2f2f3dad23ef8e01be45b0d5c2fc0132" 14 | dependencies: 15 | "@babel/types" "^7.3.2" 16 | jsesc "^2.5.1" 17 | lodash "^4.17.10" 18 | source-map "^0.5.0" 19 | trim-right "^1.0.1" 20 | 21 | "@babel/helper-function-name@^7.1.0": 22 | version "7.1.0" 23 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" 24 | dependencies: 25 | "@babel/helper-get-function-arity" "^7.0.0" 26 | "@babel/template" "^7.1.0" 27 | "@babel/types" "^7.0.0" 28 | 29 | "@babel/helper-get-function-arity@^7.0.0": 30 | version "7.0.0" 31 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" 32 | dependencies: 33 | "@babel/types" "^7.0.0" 34 | 35 | "@babel/helper-split-export-declaration@^7.0.0": 36 | version "7.0.0" 37 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" 38 | dependencies: 39 | "@babel/types" "^7.0.0" 40 | 41 | "@babel/highlight@^7.0.0": 42 | version "7.0.0" 43 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" 44 | dependencies: 45 | chalk "^2.0.0" 46 | esutils "^2.0.2" 47 | js-tokens "^4.0.0" 48 | 49 | "@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3": 50 | version "7.3.2" 51 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.2.tgz#95cdeddfc3992a6ca2a1315191c1679ca32c55cd" 52 | 53 | "@babel/template@^7.0.0", "@babel/template@^7.1.0": 54 | version "7.2.2" 55 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" 56 | dependencies: 57 | "@babel/code-frame" "^7.0.0" 58 | "@babel/parser" "^7.2.2" 59 | "@babel/types" "^7.2.2" 60 | 61 | "@babel/traverse@^7.0.0": 62 | version "7.2.3" 63 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" 64 | dependencies: 65 | "@babel/code-frame" "^7.0.0" 66 | "@babel/generator" "^7.2.2" 67 | "@babel/helper-function-name" "^7.1.0" 68 | "@babel/helper-split-export-declaration" "^7.0.0" 69 | "@babel/parser" "^7.2.3" 70 | "@babel/types" "^7.2.2" 71 | debug "^4.1.0" 72 | globals "^11.1.0" 73 | lodash "^4.17.10" 74 | 75 | "@babel/types@^7.0.0", "@babel/types@^7.2.2", "@babel/types@^7.3.2": 76 | version "7.3.2" 77 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.2.tgz#424f5be4be633fff33fb83ab8d67e4a8290f5a2f" 78 | dependencies: 79 | esutils "^2.0.2" 80 | lodash "^4.17.10" 81 | to-fast-properties "^2.0.0" 82 | 83 | ajv@^6.5.5: 84 | version "6.9.1" 85 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.1.tgz#a4d3683d74abc5670e75f0b16520f70a20ea8dc1" 86 | dependencies: 87 | fast-deep-equal "^2.0.1" 88 | fast-json-stable-stringify "^2.0.0" 89 | json-schema-traverse "^0.4.1" 90 | uri-js "^4.2.2" 91 | 92 | ansi-regex@^2.0.0: 93 | version "2.1.1" 94 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 95 | 96 | ansi-regex@^3.0.0: 97 | version "3.0.0" 98 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 99 | 100 | ansi-styles@^3.2.1: 101 | version "3.2.1" 102 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 103 | dependencies: 104 | color-convert "^1.9.0" 105 | 106 | append-transform@^1.0.0: 107 | version "1.0.0" 108 | resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" 109 | dependencies: 110 | default-require-extensions "^2.0.0" 111 | 112 | aproba@^1.0.3: 113 | version "1.2.0" 114 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 115 | 116 | archy@^1.0.0: 117 | version "1.0.0" 118 | resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" 119 | 120 | are-we-there-yet@~1.1.2: 121 | version "1.1.5" 122 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 123 | dependencies: 124 | delegates "^1.0.0" 125 | readable-stream "^2.0.6" 126 | 127 | arg@^4.1.0: 128 | version "4.1.0" 129 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.0.tgz#583c518199419e0037abb74062c37f8519e575f0" 130 | 131 | argparse@^1.0.7: 132 | version "1.0.10" 133 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 134 | dependencies: 135 | sprintf-js "~1.0.2" 136 | 137 | array-filter@~0.0.0: 138 | version "0.0.1" 139 | resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" 140 | 141 | array-map@~0.0.0: 142 | version "0.0.0" 143 | resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" 144 | 145 | array-reduce@~0.0.0: 146 | version "0.0.0" 147 | resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" 148 | 149 | arrify@^1.0.1: 150 | version "1.0.1" 151 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 152 | 153 | asn1@~0.2.3: 154 | version "0.2.4" 155 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 156 | dependencies: 157 | safer-buffer "~2.1.0" 158 | 159 | assert-plus@1.0.0, assert-plus@^1.0.0: 160 | version "1.0.0" 161 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 162 | 163 | async@^2.5.0: 164 | version "2.6.2" 165 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" 166 | dependencies: 167 | lodash "^4.17.11" 168 | 169 | asynckit@^0.4.0: 170 | version "0.4.0" 171 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 172 | 173 | aws-sign2@~0.7.0: 174 | version "0.7.0" 175 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 176 | 177 | aws4@^1.8.0: 178 | version "1.8.0" 179 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" 180 | 181 | balanced-match@^1.0.0: 182 | version "1.0.0" 183 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 184 | 185 | bcrypt-pbkdf@^1.0.0: 186 | version "1.0.2" 187 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 188 | dependencies: 189 | tweetnacl "^0.14.3" 190 | 191 | benchmark@^2.1.4: 192 | version "2.1.4" 193 | resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-2.1.4.tgz#09f3de31c916425d498cc2ee565a0ebf3c2a5629" 194 | dependencies: 195 | lodash "^4.17.4" 196 | platform "^1.3.3" 197 | 198 | bind-obj-methods@^2.0.0: 199 | version "2.0.0" 200 | resolved "https://registry.yarnpkg.com/bind-obj-methods/-/bind-obj-methods-2.0.0.tgz#0178140dbe7b7bb67dc74892ace59bc0247f06f0" 201 | 202 | bindings@^1.3.1: 203 | version "1.4.0" 204 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.4.0.tgz#909efa49f2ebe07ecd3cb136778f665052040127" 205 | dependencies: 206 | file-uri-to-path "1.0.0" 207 | 208 | bl@^1.0.0: 209 | version "1.2.2" 210 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" 211 | dependencies: 212 | readable-stream "^2.3.5" 213 | safe-buffer "^5.1.1" 214 | 215 | brace-expansion@^1.1.7: 216 | version "1.1.11" 217 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 218 | dependencies: 219 | balanced-match "^1.0.0" 220 | concat-map "0.0.1" 221 | 222 | browser-process-hrtime@^1.0.0: 223 | version "1.0.0" 224 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 225 | 226 | buffer-alloc-unsafe@^1.1.0: 227 | version "1.1.0" 228 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" 229 | 230 | buffer-alloc@^1.2.0: 231 | version "1.2.0" 232 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" 233 | dependencies: 234 | buffer-alloc-unsafe "^1.1.0" 235 | buffer-fill "^1.0.0" 236 | 237 | buffer-fill@^1.0.0: 238 | version "1.0.0" 239 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" 240 | 241 | buffer-from@^1.0.0: 242 | version "1.1.1" 243 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 244 | 245 | caching-transform@^3.0.1: 246 | version "3.0.1" 247 | resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-3.0.1.tgz#1df89e850803ad15f68dafb2abe9a8b866016c7d" 248 | dependencies: 249 | hasha "^3.0.0" 250 | make-dir "^1.3.0" 251 | package-hash "^3.0.0" 252 | write-file-atomic "^2.3.0" 253 | 254 | camelcase@^5.0.0: 255 | version "5.0.0" 256 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" 257 | 258 | capture-stack-trace@^1.0.0: 259 | version "1.0.1" 260 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" 261 | 262 | caseless@~0.12.0: 263 | version "0.12.0" 264 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 265 | 266 | chalk@^2.0.0: 267 | version "2.4.2" 268 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 269 | dependencies: 270 | ansi-styles "^3.2.1" 271 | escape-string-regexp "^1.0.5" 272 | supports-color "^5.3.0" 273 | 274 | chownr@^1.0.1: 275 | version "1.1.1" 276 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" 277 | 278 | clean-yaml-object@^0.1.0: 279 | version "0.1.0" 280 | resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" 281 | 282 | cliui@^4.0.0: 283 | version "4.1.0" 284 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" 285 | dependencies: 286 | string-width "^2.1.1" 287 | strip-ansi "^4.0.0" 288 | wrap-ansi "^2.0.0" 289 | 290 | code-point-at@^1.0.0: 291 | version "1.1.0" 292 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 293 | 294 | color-convert@^1.9.0: 295 | version "1.9.3" 296 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 297 | dependencies: 298 | color-name "1.1.3" 299 | 300 | color-name@1.1.3: 301 | version "1.1.3" 302 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 303 | 304 | color-support@^1.1.0: 305 | version "1.1.3" 306 | resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" 307 | 308 | colors@1.2.3: 309 | version "1.2.3" 310 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.3.tgz#1b152a9c4f6c9f74bc4bb96233ad0b7983b79744" 311 | 312 | combined-stream@^1.0.6, combined-stream@~1.0.6: 313 | version "1.0.7" 314 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" 315 | dependencies: 316 | delayed-stream "~1.0.0" 317 | 318 | commander@~2.17.1: 319 | version "2.17.1" 320 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" 321 | 322 | commondir@^1.0.1: 323 | version "1.0.1" 324 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 325 | 326 | concat-map@0.0.1: 327 | version "0.0.1" 328 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 329 | 330 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 331 | version "1.1.0" 332 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 333 | 334 | convert-source-map@^1.6.0: 335 | version "1.6.0" 336 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" 337 | dependencies: 338 | safe-buffer "~5.1.1" 339 | 340 | core-util-is@1.0.2, core-util-is@~1.0.0: 341 | version "1.0.2" 342 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 343 | 344 | coveralls@^3.0.2: 345 | version "3.0.2" 346 | resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.2.tgz#f5a0bcd90ca4e64e088b710fa8dda640aea4884f" 347 | dependencies: 348 | growl "~> 1.10.0" 349 | js-yaml "^3.11.0" 350 | lcov-parse "^0.0.10" 351 | log-driver "^1.2.7" 352 | minimist "^1.2.0" 353 | request "^2.85.0" 354 | 355 | cross-spawn@^4: 356 | version "4.0.2" 357 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" 358 | dependencies: 359 | lru-cache "^4.0.1" 360 | which "^1.2.9" 361 | 362 | cross-spawn@^6.0.0: 363 | version "6.0.5" 364 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 365 | dependencies: 366 | nice-try "^1.0.4" 367 | path-key "^2.0.1" 368 | semver "^5.5.0" 369 | shebang-command "^1.2.0" 370 | which "^1.2.9" 371 | 372 | dashdash@^1.12.0: 373 | version "1.14.1" 374 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 375 | dependencies: 376 | assert-plus "^1.0.0" 377 | 378 | dateformat@3.0.3: 379 | version "3.0.3" 380 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" 381 | 382 | debug@^2.1.3: 383 | version "2.6.9" 384 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 385 | dependencies: 386 | ms "2.0.0" 387 | 388 | debug@^4.1.0, debug@^4.1.1: 389 | version "4.1.1" 390 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 391 | dependencies: 392 | ms "^2.1.1" 393 | 394 | decamelize@^1.2.0: 395 | version "1.2.0" 396 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 397 | 398 | decompress-response@^3.3.0: 399 | version "3.3.0" 400 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 401 | dependencies: 402 | mimic-response "^1.0.0" 403 | 404 | deep-equal@~0.1.0: 405 | version "0.1.2" 406 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.1.2.tgz#b246c2b80a570a47c11be1d9bd1070ec878b87ce" 407 | 408 | deep-extend@^0.6.0: 409 | version "0.6.0" 410 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 411 | 412 | default-require-extensions@^2.0.0: 413 | version "2.0.0" 414 | resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" 415 | dependencies: 416 | strip-bom "^3.0.0" 417 | 418 | defined@0.0.0, defined@~0.0.0: 419 | version "0.0.0" 420 | resolved "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz#f35eea7d705e933baf13b2f03b3f83d921403b3e" 421 | 422 | delayed-stream@~1.0.0: 423 | version "1.0.0" 424 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 425 | 426 | delegates@^1.0.0: 427 | version "1.0.0" 428 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 429 | 430 | detect-libc@^1.0.3: 431 | version "1.0.3" 432 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 433 | 434 | diff@^1.3.2: 435 | version "1.4.0" 436 | resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" 437 | 438 | diff@^3.1.0: 439 | version "3.5.0" 440 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 441 | 442 | domain-browser@^1.2.0: 443 | version "1.2.0" 444 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" 445 | 446 | dot-prop@^4.2.0: 447 | version "4.2.0" 448 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" 449 | dependencies: 450 | is-obj "^1.0.0" 451 | 452 | duplexer@~0.1.1: 453 | version "0.1.1" 454 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" 455 | 456 | ecc-jsbn@~0.1.1: 457 | version "0.1.2" 458 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 459 | dependencies: 460 | jsbn "~0.1.0" 461 | safer-buffer "^2.1.0" 462 | 463 | end-of-stream@^1.0.0, end-of-stream@^1.1.0: 464 | version "1.4.1" 465 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 466 | dependencies: 467 | once "^1.4.0" 468 | 469 | error-ex@^1.3.1: 470 | version "1.3.2" 471 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 472 | dependencies: 473 | is-arrayish "^0.2.1" 474 | 475 | es6-error@^4.0.1: 476 | version "4.1.1" 477 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" 478 | 479 | es6-object-assign@^1.0.3: 480 | version "1.1.0" 481 | resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" 482 | 483 | escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5: 484 | version "1.0.5" 485 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 486 | 487 | esm@^3.2.3: 488 | version "3.2.4" 489 | resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.4.tgz#0b728b5d6043061bf552197407bf2c630717812b" 490 | 491 | esprima@^4.0.0: 492 | version "4.0.1" 493 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 494 | 495 | esutils@^2.0.2: 496 | version "2.0.2" 497 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 498 | 499 | events-to-array@^1.0.1: 500 | version "1.1.2" 501 | resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6" 502 | 503 | execa@^1.0.0: 504 | version "1.0.0" 505 | resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" 506 | dependencies: 507 | cross-spawn "^6.0.0" 508 | get-stream "^4.0.0" 509 | is-stream "^1.1.0" 510 | npm-run-path "^2.0.0" 511 | p-finally "^1.0.0" 512 | signal-exit "^3.0.0" 513 | strip-eof "^1.0.0" 514 | 515 | expand-template@^2.0.3: 516 | version "2.0.3" 517 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 518 | 519 | extend@^3.0.2, extend@~3.0.2: 520 | version "3.0.2" 521 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 522 | 523 | extsprintf@1.3.0: 524 | version "1.3.0" 525 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 526 | 527 | extsprintf@^1.2.0: 528 | version "1.4.0" 529 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 530 | 531 | fast-deep-equal@^2.0.1: 532 | version "2.0.1" 533 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 534 | 535 | fast-json-stable-stringify@^2.0.0: 536 | version "2.0.0" 537 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 538 | 539 | faucet@0.0.1: 540 | version "0.0.1" 541 | resolved "https://registry.yarnpkg.com/faucet/-/faucet-0.0.1.tgz#597dcf1d2189a2c062321b591e8f151ed2039d9c" 542 | dependencies: 543 | defined "0.0.0" 544 | duplexer "~0.1.1" 545 | minimist "0.0.5" 546 | sprintf "~0.1.3" 547 | tap-parser "~0.4.0" 548 | tape "~2.3.2" 549 | through2 "~0.2.3" 550 | 551 | fecha@^3.0.2: 552 | version "3.0.2" 553 | resolved "https://registry.yarnpkg.com/fecha/-/fecha-3.0.2.tgz#fb3adb02762ab6dd27f7d5419f2f6c21a4229cd7" 554 | 555 | file-uri-to-path@1.0.0: 556 | version "1.0.0" 557 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 558 | 559 | find-cache-dir@^2.0.0: 560 | version "2.0.0" 561 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" 562 | dependencies: 563 | commondir "^1.0.1" 564 | make-dir "^1.0.0" 565 | pkg-dir "^3.0.0" 566 | 567 | find-up@^3.0.0: 568 | version "3.0.0" 569 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 570 | dependencies: 571 | locate-path "^3.0.0" 572 | 573 | foreground-child@^1.3.3, foreground-child@^1.5.6: 574 | version "1.5.6" 575 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" 576 | dependencies: 577 | cross-spawn "^4" 578 | signal-exit "^3.0.0" 579 | 580 | forever-agent@~0.6.1: 581 | version "0.6.1" 582 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 583 | 584 | form-data@~2.3.2: 585 | version "2.3.3" 586 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 587 | dependencies: 588 | asynckit "^0.4.0" 589 | combined-stream "^1.0.6" 590 | mime-types "^2.1.12" 591 | 592 | fs-constants@^1.0.0: 593 | version "1.0.0" 594 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 595 | 596 | fs-exists-cached@^1.0.0: 597 | version "1.0.0" 598 | resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce" 599 | 600 | fs-extra@^7.0.1: 601 | version "7.0.1" 602 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" 603 | dependencies: 604 | graceful-fs "^4.1.2" 605 | jsonfile "^4.0.0" 606 | universalify "^0.1.0" 607 | 608 | fs.realpath@^1.0.0: 609 | version "1.0.0" 610 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 611 | 612 | function-loop@^1.0.1: 613 | version "1.0.1" 614 | resolved "https://registry.yarnpkg.com/function-loop/-/function-loop-1.0.1.tgz#8076bb305e8e6a3cceee2920765f330d190f340c" 615 | 616 | gauge@~2.7.3: 617 | version "2.7.4" 618 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 619 | dependencies: 620 | aproba "^1.0.3" 621 | console-control-strings "^1.0.0" 622 | has-unicode "^2.0.0" 623 | object-assign "^4.1.0" 624 | signal-exit "^3.0.0" 625 | string-width "^1.0.1" 626 | strip-ansi "^3.0.1" 627 | wide-align "^1.1.0" 628 | 629 | get-caller-file@^1.0.1: 630 | version "1.0.3" 631 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" 632 | 633 | get-stream@^4.0.0: 634 | version "4.1.0" 635 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 636 | dependencies: 637 | pump "^3.0.0" 638 | 639 | getpass@^0.1.1: 640 | version "0.1.7" 641 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 642 | dependencies: 643 | assert-plus "^1.0.0" 644 | 645 | github-from-package@0.0.0: 646 | version "0.0.0" 647 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 648 | 649 | glob@^7.0.0, glob@^7.0.5, glob@^7.1.3: 650 | version "7.1.3" 651 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 652 | dependencies: 653 | fs.realpath "^1.0.0" 654 | inflight "^1.0.4" 655 | inherits "2" 656 | minimatch "^3.0.4" 657 | once "^1.3.0" 658 | path-is-absolute "^1.0.0" 659 | 660 | globals@^11.1.0: 661 | version "11.11.0" 662 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" 663 | 664 | graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: 665 | version "4.1.15" 666 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 667 | 668 | "growl@~> 1.10.0": 669 | version "1.10.5" 670 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 671 | 672 | handlebars@^4.1.0: 673 | version "4.1.0" 674 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" 675 | dependencies: 676 | async "^2.5.0" 677 | optimist "^0.6.1" 678 | source-map "^0.6.1" 679 | optionalDependencies: 680 | uglify-js "^3.1.4" 681 | 682 | har-schema@^2.0.0: 683 | version "2.0.0" 684 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 685 | 686 | har-validator@~5.1.0: 687 | version "5.1.3" 688 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 689 | dependencies: 690 | ajv "^6.5.5" 691 | har-schema "^2.0.0" 692 | 693 | has-flag@^3.0.0: 694 | version "3.0.0" 695 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 696 | 697 | has-unicode@^2.0.0: 698 | version "2.0.1" 699 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 700 | 701 | hasha@^3.0.0: 702 | version "3.0.0" 703 | resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" 704 | dependencies: 705 | is-stream "^1.0.1" 706 | 707 | hosted-git-info@^2.1.4: 708 | version "2.7.1" 709 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" 710 | 711 | http-signature@~1.2.0: 712 | version "1.2.0" 713 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 714 | dependencies: 715 | assert-plus "^1.0.0" 716 | jsprim "^1.2.2" 717 | sshpk "^1.7.0" 718 | 719 | imurmurhash@^0.1.4: 720 | version "0.1.4" 721 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 722 | 723 | inflight@^1.0.4: 724 | version "1.0.6" 725 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 726 | dependencies: 727 | once "^1.3.0" 728 | wrappy "1" 729 | 730 | inherits@2, inherits@~2.0.1, inherits@~2.0.3: 731 | version "2.0.3" 732 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 733 | 734 | ini@~1.3.0: 735 | version "1.3.5" 736 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 737 | 738 | interpret@^1.0.0: 739 | version "1.2.0" 740 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" 741 | 742 | invert-kv@^2.0.0: 743 | version "2.0.0" 744 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" 745 | 746 | is-arrayish@^0.2.1: 747 | version "0.2.1" 748 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 749 | 750 | is-fullwidth-code-point@^1.0.0: 751 | version "1.0.0" 752 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 753 | dependencies: 754 | number-is-nan "^1.0.0" 755 | 756 | is-fullwidth-code-point@^2.0.0: 757 | version "2.0.0" 758 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 759 | 760 | is-obj@^1.0.0: 761 | version "1.0.1" 762 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 763 | 764 | is-stream@^1.0.1, is-stream@^1.1.0: 765 | version "1.1.0" 766 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 767 | 768 | is-typedarray@~1.0.0: 769 | version "1.0.0" 770 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 771 | 772 | isarray@0.0.1: 773 | version "0.0.1" 774 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 775 | 776 | isarray@~1.0.0: 777 | version "1.0.0" 778 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 779 | 780 | isexe@^2.0.0: 781 | version "2.0.0" 782 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 783 | 784 | isstream@~0.1.2: 785 | version "0.1.2" 786 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 787 | 788 | istanbul-lib-coverage@^2.0.3: 789 | version "2.0.3" 790 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba" 791 | 792 | istanbul-lib-hook@^2.0.3: 793 | version "2.0.3" 794 | resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz#e0e581e461c611be5d0e5ef31c5f0109759916fb" 795 | dependencies: 796 | append-transform "^1.0.0" 797 | 798 | istanbul-lib-instrument@^3.1.0: 799 | version "3.1.0" 800 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971" 801 | dependencies: 802 | "@babel/generator" "^7.0.0" 803 | "@babel/parser" "^7.0.0" 804 | "@babel/template" "^7.0.0" 805 | "@babel/traverse" "^7.0.0" 806 | "@babel/types" "^7.0.0" 807 | istanbul-lib-coverage "^2.0.3" 808 | semver "^5.5.0" 809 | 810 | istanbul-lib-report@^2.0.4: 811 | version "2.0.4" 812 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz#bfd324ee0c04f59119cb4f07dab157d09f24d7e4" 813 | dependencies: 814 | istanbul-lib-coverage "^2.0.3" 815 | make-dir "^1.3.0" 816 | supports-color "^6.0.0" 817 | 818 | istanbul-lib-source-maps@^3.0.2: 819 | version "3.0.2" 820 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz#f1e817229a9146e8424a28e5d69ba220fda34156" 821 | dependencies: 822 | debug "^4.1.1" 823 | istanbul-lib-coverage "^2.0.3" 824 | make-dir "^1.3.0" 825 | rimraf "^2.6.2" 826 | source-map "^0.6.1" 827 | 828 | istanbul-reports@^2.1.1: 829 | version "2.1.1" 830 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.1.1.tgz#72ef16b4ecb9a4a7bd0e2001e00f95d1eec8afa9" 831 | dependencies: 832 | handlebars "^4.1.0" 833 | 834 | js-tokens@^4.0.0: 835 | version "4.0.0" 836 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 837 | 838 | js-yaml@^3.11.0, js-yaml@^3.12.1, js-yaml@^3.2.7, js-yaml@^3.3.1: 839 | version "3.12.1" 840 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" 841 | dependencies: 842 | argparse "^1.0.7" 843 | esprima "^4.0.0" 844 | 845 | jsbn@~0.1.0: 846 | version "0.1.1" 847 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 848 | 849 | jsesc@^2.5.1: 850 | version "2.5.2" 851 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 852 | 853 | json-parse-better-errors@^1.0.1: 854 | version "1.0.2" 855 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 856 | 857 | json-schema-traverse@^0.4.1: 858 | version "0.4.1" 859 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 860 | 861 | json-schema@0.2.3: 862 | version "0.2.3" 863 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 864 | 865 | json-stringify-safe@~5.0.1: 866 | version "5.0.1" 867 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 868 | 869 | jsonfile@^4.0.0: 870 | version "4.0.0" 871 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 872 | optionalDependencies: 873 | graceful-fs "^4.1.6" 874 | 875 | jsonify@~0.0.0: 876 | version "0.0.0" 877 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 878 | 879 | jsprim@^1.2.2: 880 | version "1.4.1" 881 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 882 | dependencies: 883 | assert-plus "1.0.0" 884 | extsprintf "1.3.0" 885 | json-schema "0.2.3" 886 | verror "1.10.0" 887 | 888 | lcid@^2.0.0: 889 | version "2.0.0" 890 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" 891 | dependencies: 892 | invert-kv "^2.0.0" 893 | 894 | lcov-parse@^0.0.10: 895 | version "0.0.10" 896 | resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" 897 | 898 | load-json-file@^4.0.0: 899 | version "4.0.0" 900 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 901 | dependencies: 902 | graceful-fs "^4.1.2" 903 | parse-json "^4.0.0" 904 | pify "^3.0.0" 905 | strip-bom "^3.0.0" 906 | 907 | locate-path@^3.0.0: 908 | version "3.0.0" 909 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 910 | dependencies: 911 | p-locate "^3.0.0" 912 | path-exists "^3.0.0" 913 | 914 | lodash.flattendeep@^4.4.0: 915 | version "4.4.0" 916 | resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" 917 | 918 | lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4: 919 | version "4.17.11" 920 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" 921 | 922 | log-driver@^1.2.7: 923 | version "1.2.7" 924 | resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" 925 | 926 | lru-cache@^4.0.1: 927 | version "4.1.5" 928 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 929 | dependencies: 930 | pseudomap "^1.0.2" 931 | yallist "^2.1.2" 932 | 933 | make-dir@^1.0.0, make-dir@^1.3.0: 934 | version "1.3.0" 935 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" 936 | dependencies: 937 | pify "^3.0.0" 938 | 939 | make-error@^1.1.1: 940 | version "1.3.5" 941 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" 942 | 943 | map-age-cleaner@^0.1.1: 944 | version "0.1.3" 945 | resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" 946 | dependencies: 947 | p-defer "^1.0.0" 948 | 949 | mem@^4.0.0: 950 | version "4.1.0" 951 | resolved "https://registry.yarnpkg.com/mem/-/mem-4.1.0.tgz#aeb9be2d21f47e78af29e4ac5978e8afa2ca5b8a" 952 | dependencies: 953 | map-age-cleaner "^0.1.1" 954 | mimic-fn "^1.0.0" 955 | p-is-promise "^2.0.0" 956 | 957 | merge-source-map@^1.1.0: 958 | version "1.1.0" 959 | resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" 960 | dependencies: 961 | source-map "^0.6.1" 962 | 963 | microtime@^2.1.8: 964 | version "2.1.9" 965 | resolved "https://registry.yarnpkg.com/microtime/-/microtime-2.1.9.tgz#f4073289599ef4dd1a673f2b1fe6f9c9502f784e" 966 | dependencies: 967 | bindings "^1.3.1" 968 | nan "2.12.x" 969 | prebuild-install "^5.2.2" 970 | 971 | mime-db@~1.38.0: 972 | version "1.38.0" 973 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" 974 | 975 | mime-types@^2.1.12, mime-types@~2.1.19: 976 | version "2.1.22" 977 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" 978 | dependencies: 979 | mime-db "~1.38.0" 980 | 981 | mimic-fn@^1.0.0: 982 | version "1.2.0" 983 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 984 | 985 | mimic-response@^1.0.0: 986 | version "1.0.1" 987 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 988 | 989 | minimatch@^3.0.4: 990 | version "3.0.4" 991 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 992 | dependencies: 993 | brace-expansion "^1.1.7" 994 | 995 | minimist@0.0.5: 996 | version "0.0.5" 997 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566" 998 | 999 | minimist@0.0.8: 1000 | version "0.0.8" 1001 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1002 | 1003 | minimist@^1.2.0: 1004 | version "1.2.0" 1005 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1006 | 1007 | minimist@~0.0.1: 1008 | version "0.0.10" 1009 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 1010 | 1011 | minipass@^2.2.0, minipass@^2.3.5: 1012 | version "2.3.5" 1013 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" 1014 | dependencies: 1015 | safe-buffer "^5.1.2" 1016 | yallist "^3.0.0" 1017 | 1018 | mkdirp@^0.5.0, mkdirp@^0.5.1: 1019 | version "0.5.1" 1020 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1021 | dependencies: 1022 | minimist "0.0.8" 1023 | 1024 | ms@2.0.0: 1025 | version "2.0.0" 1026 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1027 | 1028 | ms@^2.1.1: 1029 | version "2.1.1" 1030 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1031 | 1032 | nan@2.12.x: 1033 | version "2.12.1" 1034 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" 1035 | 1036 | napi-build-utils@^1.0.1: 1037 | version "1.0.1" 1038 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508" 1039 | 1040 | ncc@^0.3.6: 1041 | version "0.3.6" 1042 | resolved "https://registry.yarnpkg.com/ncc/-/ncc-0.3.6.tgz#11b47af973d7f2374af46bc0d8533366acc908eb" 1043 | dependencies: 1044 | mkdirp "^0.5.1" 1045 | rimraf "^2.6.1" 1046 | tracer "^0.8.7" 1047 | ws "^2.3.1" 1048 | 1049 | nice-try@^1.0.4: 1050 | version "1.0.5" 1051 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1052 | 1053 | node-abi@^2.7.0: 1054 | version "2.7.1" 1055 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.7.1.tgz#a8997ae91176a5fbaa455b194976e32683cda643" 1056 | dependencies: 1057 | semver "^5.4.1" 1058 | 1059 | noop-logger@^0.1.1: 1060 | version "0.1.1" 1061 | resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" 1062 | 1063 | normalize-package-data@^2.3.2: 1064 | version "2.5.0" 1065 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1066 | dependencies: 1067 | hosted-git-info "^2.1.4" 1068 | resolve "^1.10.0" 1069 | semver "2 || 3 || 4 || 5" 1070 | validate-npm-package-license "^3.0.1" 1071 | 1072 | npm-run-path@^2.0.0: 1073 | version "2.0.2" 1074 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1075 | dependencies: 1076 | path-key "^2.0.0" 1077 | 1078 | npmlog@^4.0.1: 1079 | version "4.1.2" 1080 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1081 | dependencies: 1082 | are-we-there-yet "~1.1.2" 1083 | console-control-strings "~1.1.0" 1084 | gauge "~2.7.3" 1085 | set-blocking "~2.0.0" 1086 | 1087 | number-is-nan@^1.0.0: 1088 | version "1.0.1" 1089 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1090 | 1091 | nyc@^13.2.0: 1092 | version "13.3.0" 1093 | resolved "https://registry.yarnpkg.com/nyc/-/nyc-13.3.0.tgz#da4dbe91a9c8b9ead3f4f3344c76f353e3c78c75" 1094 | dependencies: 1095 | archy "^1.0.0" 1096 | arrify "^1.0.1" 1097 | caching-transform "^3.0.1" 1098 | convert-source-map "^1.6.0" 1099 | find-cache-dir "^2.0.0" 1100 | find-up "^3.0.0" 1101 | foreground-child "^1.5.6" 1102 | glob "^7.1.3" 1103 | istanbul-lib-coverage "^2.0.3" 1104 | istanbul-lib-hook "^2.0.3" 1105 | istanbul-lib-instrument "^3.1.0" 1106 | istanbul-lib-report "^2.0.4" 1107 | istanbul-lib-source-maps "^3.0.2" 1108 | istanbul-reports "^2.1.1" 1109 | make-dir "^1.3.0" 1110 | merge-source-map "^1.1.0" 1111 | resolve-from "^4.0.0" 1112 | rimraf "^2.6.3" 1113 | signal-exit "^3.0.2" 1114 | spawn-wrap "^1.4.2" 1115 | test-exclude "^5.1.0" 1116 | uuid "^3.3.2" 1117 | yargs "^12.0.5" 1118 | yargs-parser "^11.1.1" 1119 | 1120 | oauth-sign@~0.9.0: 1121 | version "0.9.0" 1122 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 1123 | 1124 | object-assign@^4.1.0: 1125 | version "4.1.1" 1126 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1127 | 1128 | object-keys@~0.4.0: 1129 | version "0.4.0" 1130 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" 1131 | 1132 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1133 | version "1.4.0" 1134 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1135 | dependencies: 1136 | wrappy "1" 1137 | 1138 | opener@^1.5.1: 1139 | version "1.5.1" 1140 | resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" 1141 | 1142 | optimist@^0.6.1: 1143 | version "0.6.1" 1144 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 1145 | dependencies: 1146 | minimist "~0.0.1" 1147 | wordwrap "~0.0.2" 1148 | 1149 | os-homedir@^1.0.1, os-homedir@^1.0.2: 1150 | version "1.0.2" 1151 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1152 | 1153 | os-locale@^3.0.0: 1154 | version "3.1.0" 1155 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" 1156 | dependencies: 1157 | execa "^1.0.0" 1158 | lcid "^2.0.0" 1159 | mem "^4.0.0" 1160 | 1161 | own-or-env@^1.0.1: 1162 | version "1.0.1" 1163 | resolved "https://registry.yarnpkg.com/own-or-env/-/own-or-env-1.0.1.tgz#54ce601d3bf78236c5c65633aa1c8ec03f8007e4" 1164 | dependencies: 1165 | own-or "^1.0.0" 1166 | 1167 | own-or@^1.0.0: 1168 | version "1.0.0" 1169 | resolved "https://registry.yarnpkg.com/own-or/-/own-or-1.0.0.tgz#4e877fbeda9a2ec8000fbc0bcae39645ee8bf8dc" 1170 | 1171 | p-defer@^1.0.0: 1172 | version "1.0.0" 1173 | resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" 1174 | 1175 | p-finally@^1.0.0: 1176 | version "1.0.0" 1177 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1178 | 1179 | p-is-promise@^2.0.0: 1180 | version "2.0.0" 1181 | resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" 1182 | 1183 | p-limit@^2.0.0: 1184 | version "2.1.0" 1185 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" 1186 | dependencies: 1187 | p-try "^2.0.0" 1188 | 1189 | p-locate@^3.0.0: 1190 | version "3.0.0" 1191 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1192 | dependencies: 1193 | p-limit "^2.0.0" 1194 | 1195 | p-try@^2.0.0: 1196 | version "2.0.0" 1197 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" 1198 | 1199 | package-hash@^3.0.0: 1200 | version "3.0.0" 1201 | resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e" 1202 | dependencies: 1203 | graceful-fs "^4.1.15" 1204 | hasha "^3.0.0" 1205 | lodash.flattendeep "^4.4.0" 1206 | release-zalgo "^1.0.0" 1207 | 1208 | parse-json@^4.0.0: 1209 | version "4.0.0" 1210 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 1211 | dependencies: 1212 | error-ex "^1.3.1" 1213 | json-parse-better-errors "^1.0.1" 1214 | 1215 | path-exists@^3.0.0: 1216 | version "3.0.0" 1217 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1218 | 1219 | path-is-absolute@^1.0.0: 1220 | version "1.0.1" 1221 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1222 | 1223 | path-key@^2.0.0, path-key@^2.0.1: 1224 | version "2.0.1" 1225 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1226 | 1227 | path-parse@^1.0.6: 1228 | version "1.0.6" 1229 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1230 | 1231 | path-type@^3.0.0: 1232 | version "3.0.0" 1233 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 1234 | dependencies: 1235 | pify "^3.0.0" 1236 | 1237 | performance-now@^2.1.0: 1238 | version "2.1.0" 1239 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1240 | 1241 | pify@^3.0.0: 1242 | version "3.0.0" 1243 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1244 | 1245 | pkg-dir@^3.0.0: 1246 | version "3.0.0" 1247 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" 1248 | dependencies: 1249 | find-up "^3.0.0" 1250 | 1251 | platform@^1.3.3: 1252 | version "1.3.5" 1253 | resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444" 1254 | 1255 | prebuild-install@^5.2.2: 1256 | version "5.2.4" 1257 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.4.tgz#8cc41a217ef778a31d3a876fe6668d05406db750" 1258 | dependencies: 1259 | detect-libc "^1.0.3" 1260 | expand-template "^2.0.3" 1261 | github-from-package "0.0.0" 1262 | minimist "^1.2.0" 1263 | mkdirp "^0.5.1" 1264 | napi-build-utils "^1.0.1" 1265 | node-abi "^2.7.0" 1266 | noop-logger "^0.1.1" 1267 | npmlog "^4.0.1" 1268 | os-homedir "^1.0.1" 1269 | pump "^2.0.1" 1270 | rc "^1.2.7" 1271 | simple-get "^2.7.0" 1272 | tar-fs "^1.13.0" 1273 | tunnel-agent "^0.6.0" 1274 | which-pm-runs "^1.0.0" 1275 | 1276 | process-nextick-args@~2.0.0: 1277 | version "2.0.0" 1278 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 1279 | 1280 | pseudomap@^1.0.2: 1281 | version "1.0.2" 1282 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1283 | 1284 | psl@^1.1.24: 1285 | version "1.1.31" 1286 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" 1287 | 1288 | pump@^1.0.0: 1289 | version "1.0.3" 1290 | resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" 1291 | dependencies: 1292 | end-of-stream "^1.1.0" 1293 | once "^1.3.1" 1294 | 1295 | pump@^2.0.1: 1296 | version "2.0.1" 1297 | resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" 1298 | dependencies: 1299 | end-of-stream "^1.1.0" 1300 | once "^1.3.1" 1301 | 1302 | pump@^3.0.0: 1303 | version "3.0.0" 1304 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1305 | dependencies: 1306 | end-of-stream "^1.1.0" 1307 | once "^1.3.1" 1308 | 1309 | punycode@^1.3.2, punycode@^1.4.1: 1310 | version "1.4.1" 1311 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1312 | 1313 | punycode@^2.1.0: 1314 | version "2.1.1" 1315 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1316 | 1317 | qs@~6.5.2: 1318 | version "6.5.2" 1319 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 1320 | 1321 | rc@^1.2.7: 1322 | version "1.2.8" 1323 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1324 | dependencies: 1325 | deep-extend "^0.6.0" 1326 | ini "~1.3.0" 1327 | minimist "^1.2.0" 1328 | strip-json-comments "~2.0.1" 1329 | 1330 | read-pkg-up@^4.0.0: 1331 | version "4.0.0" 1332 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" 1333 | dependencies: 1334 | find-up "^3.0.0" 1335 | read-pkg "^3.0.0" 1336 | 1337 | read-pkg@^3.0.0: 1338 | version "3.0.0" 1339 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 1340 | dependencies: 1341 | load-json-file "^4.0.0" 1342 | normalize-package-data "^2.3.2" 1343 | path-type "^3.0.0" 1344 | 1345 | readable-stream@^2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.3.0, readable-stream@^2.3.5: 1346 | version "2.3.6" 1347 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 1348 | dependencies: 1349 | core-util-is "~1.0.0" 1350 | inherits "~2.0.3" 1351 | isarray "~1.0.0" 1352 | process-nextick-args "~2.0.0" 1353 | safe-buffer "~5.1.1" 1354 | string_decoder "~1.1.1" 1355 | util-deprecate "~1.0.1" 1356 | 1357 | readable-stream@~1.1.11, readable-stream@~1.1.9: 1358 | version "1.1.14" 1359 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" 1360 | dependencies: 1361 | core-util-is "~1.0.0" 1362 | inherits "~2.0.1" 1363 | isarray "0.0.1" 1364 | string_decoder "~0.10.x" 1365 | 1366 | rechoir@^0.6.2: 1367 | version "0.6.2" 1368 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 1369 | dependencies: 1370 | resolve "^1.1.6" 1371 | 1372 | release-zalgo@^1.0.0: 1373 | version "1.0.0" 1374 | resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" 1375 | dependencies: 1376 | es6-error "^4.0.1" 1377 | 1378 | request@^2.85.0: 1379 | version "2.88.0" 1380 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 1381 | dependencies: 1382 | aws-sign2 "~0.7.0" 1383 | aws4 "^1.8.0" 1384 | caseless "~0.12.0" 1385 | combined-stream "~1.0.6" 1386 | extend "~3.0.2" 1387 | forever-agent "~0.6.1" 1388 | form-data "~2.3.2" 1389 | har-validator "~5.1.0" 1390 | http-signature "~1.2.0" 1391 | is-typedarray "~1.0.0" 1392 | isstream "~0.1.2" 1393 | json-stringify-safe "~5.0.1" 1394 | mime-types "~2.1.19" 1395 | oauth-sign "~0.9.0" 1396 | performance-now "^2.1.0" 1397 | qs "~6.5.2" 1398 | safe-buffer "^5.1.2" 1399 | tough-cookie "~2.4.3" 1400 | tunnel-agent "^0.6.0" 1401 | uuid "^3.3.2" 1402 | 1403 | require-directory@^2.1.1: 1404 | version "2.1.1" 1405 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1406 | 1407 | require-main-filename@^1.0.1: 1408 | version "1.0.1" 1409 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 1410 | 1411 | resolve-from@^4.0.0: 1412 | version "4.0.0" 1413 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1414 | 1415 | resolve@^1.1.6, resolve@^1.10.0: 1416 | version "1.10.0" 1417 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" 1418 | dependencies: 1419 | path-parse "^1.0.6" 1420 | 1421 | resumer@~0.0.0: 1422 | version "0.0.0" 1423 | resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" 1424 | dependencies: 1425 | through "~2.3.4" 1426 | 1427 | rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: 1428 | version "2.6.3" 1429 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1430 | dependencies: 1431 | glob "^7.1.3" 1432 | 1433 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1434 | version "5.1.2" 1435 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1436 | 1437 | safe-buffer@~5.0.1: 1438 | version "5.0.1" 1439 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" 1440 | 1441 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 1442 | version "2.1.2" 1443 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1444 | 1445 | "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: 1446 | version "5.6.0" 1447 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 1448 | 1449 | set-blocking@^2.0.0, set-blocking@~2.0.0: 1450 | version "2.0.0" 1451 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1452 | 1453 | shebang-command@^1.2.0: 1454 | version "1.2.0" 1455 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1456 | dependencies: 1457 | shebang-regex "^1.0.0" 1458 | 1459 | shebang-regex@^1.0.0: 1460 | version "1.0.0" 1461 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1462 | 1463 | shell-quote@^1.6.1: 1464 | version "1.6.1" 1465 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" 1466 | dependencies: 1467 | array-filter "~0.0.0" 1468 | array-map "~0.0.0" 1469 | array-reduce "~0.0.0" 1470 | jsonify "~0.0.0" 1471 | 1472 | shelljs@^0.8.1, shelljs@^0.8.3: 1473 | version "0.8.3" 1474 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" 1475 | dependencies: 1476 | glob "^7.0.0" 1477 | interpret "^1.0.0" 1478 | rechoir "^0.6.2" 1479 | 1480 | shx@^0.3.2: 1481 | version "0.3.2" 1482 | resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.2.tgz#40501ce14eb5e0cbcac7ddbd4b325563aad8c123" 1483 | dependencies: 1484 | es6-object-assign "^1.0.3" 1485 | minimist "^1.2.0" 1486 | shelljs "^0.8.1" 1487 | 1488 | signal-exit@^3.0.0, signal-exit@^3.0.2: 1489 | version "3.0.2" 1490 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1491 | 1492 | simple-concat@^1.0.0: 1493 | version "1.0.0" 1494 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" 1495 | 1496 | simple-get@^2.7.0: 1497 | version "2.8.1" 1498 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" 1499 | dependencies: 1500 | decompress-response "^3.3.0" 1501 | once "^1.3.1" 1502 | simple-concat "^1.0.0" 1503 | 1504 | source-map-support@^0.5.10, source-map-support@^0.5.6, source-map-support@~0.5.9: 1505 | version "0.5.10" 1506 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" 1507 | dependencies: 1508 | buffer-from "^1.0.0" 1509 | source-map "^0.6.0" 1510 | 1511 | source-map@^0.5.0: 1512 | version "0.5.7" 1513 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1514 | 1515 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: 1516 | version "0.6.1" 1517 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1518 | 1519 | spawn-wrap@^1.4.2: 1520 | version "1.4.2" 1521 | resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c" 1522 | dependencies: 1523 | foreground-child "^1.5.6" 1524 | mkdirp "^0.5.0" 1525 | os-homedir "^1.0.1" 1526 | rimraf "^2.6.2" 1527 | signal-exit "^3.0.2" 1528 | which "^1.3.0" 1529 | 1530 | spdx-correct@^3.0.0: 1531 | version "3.1.0" 1532 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 1533 | dependencies: 1534 | spdx-expression-parse "^3.0.0" 1535 | spdx-license-ids "^3.0.0" 1536 | 1537 | spdx-exceptions@^2.1.0: 1538 | version "2.2.0" 1539 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" 1540 | 1541 | spdx-expression-parse@^3.0.0: 1542 | version "3.0.0" 1543 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 1544 | dependencies: 1545 | spdx-exceptions "^2.1.0" 1546 | spdx-license-ids "^3.0.0" 1547 | 1548 | spdx-license-ids@^3.0.0: 1549 | version "3.0.3" 1550 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" 1551 | 1552 | sprintf-js@~1.0.2: 1553 | version "1.0.3" 1554 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1555 | 1556 | sprintf@~0.1.3: 1557 | version "0.1.5" 1558 | resolved "https://registry.yarnpkg.com/sprintf/-/sprintf-0.1.5.tgz#8f83e39a9317c1a502cb7db8050e51c679f6edcf" 1559 | 1560 | sshpk@^1.7.0: 1561 | version "1.16.1" 1562 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 1563 | dependencies: 1564 | asn1 "~0.2.3" 1565 | assert-plus "^1.0.0" 1566 | bcrypt-pbkdf "^1.0.0" 1567 | dashdash "^1.12.0" 1568 | ecc-jsbn "~0.1.1" 1569 | getpass "^0.1.1" 1570 | jsbn "~0.1.0" 1571 | safer-buffer "^2.0.2" 1572 | tweetnacl "~0.14.0" 1573 | 1574 | stack-utils@^1.0.2: 1575 | version "1.0.2" 1576 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" 1577 | 1578 | string-width@^1.0.1: 1579 | version "1.0.2" 1580 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1581 | dependencies: 1582 | code-point-at "^1.0.0" 1583 | is-fullwidth-code-point "^1.0.0" 1584 | strip-ansi "^3.0.0" 1585 | 1586 | "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: 1587 | version "2.1.1" 1588 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1589 | dependencies: 1590 | is-fullwidth-code-point "^2.0.0" 1591 | strip-ansi "^4.0.0" 1592 | 1593 | string_decoder@~0.10.x: 1594 | version "0.10.31" 1595 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 1596 | 1597 | string_decoder@~1.1.1: 1598 | version "1.1.1" 1599 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1600 | dependencies: 1601 | safe-buffer "~5.1.0" 1602 | 1603 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1604 | version "3.0.1" 1605 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1606 | dependencies: 1607 | ansi-regex "^2.0.0" 1608 | 1609 | strip-ansi@^4.0.0: 1610 | version "4.0.0" 1611 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1612 | dependencies: 1613 | ansi-regex "^3.0.0" 1614 | 1615 | strip-bom@^3.0.0: 1616 | version "3.0.0" 1617 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1618 | 1619 | strip-eof@^1.0.0: 1620 | version "1.0.0" 1621 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 1622 | 1623 | strip-json-comments@~2.0.1: 1624 | version "2.0.1" 1625 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1626 | 1627 | supports-color@^5.3.0: 1628 | version "5.5.0" 1629 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1630 | dependencies: 1631 | has-flag "^3.0.0" 1632 | 1633 | supports-color@^6.0.0: 1634 | version "6.1.0" 1635 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 1636 | dependencies: 1637 | has-flag "^3.0.0" 1638 | 1639 | tap-mocha-reporter@^3.0.7: 1640 | version "3.0.7" 1641 | resolved "https://registry.yarnpkg.com/tap-mocha-reporter/-/tap-mocha-reporter-3.0.7.tgz#235e57893b500861ea5d0924965dadfb2f05eaa7" 1642 | dependencies: 1643 | color-support "^1.1.0" 1644 | debug "^2.1.3" 1645 | diff "^1.3.2" 1646 | escape-string-regexp "^1.0.3" 1647 | glob "^7.0.5" 1648 | js-yaml "^3.3.1" 1649 | tap-parser "^5.1.0" 1650 | unicode-length "^1.0.0" 1651 | optionalDependencies: 1652 | readable-stream "^2.1.5" 1653 | 1654 | tap-parser@^5.1.0: 1655 | version "5.4.0" 1656 | resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-5.4.0.tgz#6907e89725d7b7fa6ae41ee2c464c3db43188aec" 1657 | dependencies: 1658 | events-to-array "^1.0.1" 1659 | js-yaml "^3.2.7" 1660 | optionalDependencies: 1661 | readable-stream "^2" 1662 | 1663 | tap-parser@^7.0.0: 1664 | version "7.0.0" 1665 | resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-7.0.0.tgz#54db35302fda2c2ccc21954ad3be22b2cba42721" 1666 | dependencies: 1667 | events-to-array "^1.0.1" 1668 | js-yaml "^3.2.7" 1669 | minipass "^2.2.0" 1670 | 1671 | tap-parser@~0.4.0: 1672 | version "0.4.3" 1673 | resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-0.4.3.tgz#a4eae190c10d76c7a111921ff38bbe4d58f09eea" 1674 | dependencies: 1675 | inherits "~2.0.1" 1676 | readable-stream "~1.1.11" 1677 | 1678 | tap@^12.1.1: 1679 | version "12.5.2" 1680 | resolved "https://registry.yarnpkg.com/tap/-/tap-12.5.2.tgz#b4848b8f166180f5534dc7fb9f4e6a934569323c" 1681 | dependencies: 1682 | bind-obj-methods "^2.0.0" 1683 | browser-process-hrtime "^1.0.0" 1684 | capture-stack-trace "^1.0.0" 1685 | clean-yaml-object "^0.1.0" 1686 | color-support "^1.1.0" 1687 | coveralls "^3.0.2" 1688 | domain-browser "^1.2.0" 1689 | esm "^3.2.3" 1690 | foreground-child "^1.3.3" 1691 | fs-exists-cached "^1.0.0" 1692 | function-loop "^1.0.1" 1693 | glob "^7.1.3" 1694 | isexe "^2.0.0" 1695 | js-yaml "^3.12.1" 1696 | minipass "^2.3.5" 1697 | mkdirp "^0.5.1" 1698 | nyc "^13.2.0" 1699 | opener "^1.5.1" 1700 | os-homedir "^1.0.2" 1701 | own-or "^1.0.0" 1702 | own-or-env "^1.0.1" 1703 | rimraf "^2.6.3" 1704 | signal-exit "^3.0.0" 1705 | source-map-support "^0.5.10" 1706 | stack-utils "^1.0.2" 1707 | tap-mocha-reporter "^3.0.7" 1708 | tap-parser "^7.0.0" 1709 | tmatch "^4.0.0" 1710 | trivial-deferred "^1.0.1" 1711 | ts-node "^8.0.2" 1712 | tsame "^2.0.1" 1713 | typescript "^3.3.3" 1714 | write-file-atomic "^2.4.2" 1715 | yapool "^1.0.0" 1716 | 1717 | tape@~2.3.2: 1718 | version "2.3.3" 1719 | resolved "https://registry.yarnpkg.com/tape/-/tape-2.3.3.tgz#2e7ce0a31df09f8d6851664a71842e0ca5057af7" 1720 | dependencies: 1721 | deep-equal "~0.1.0" 1722 | defined "~0.0.0" 1723 | inherits "~2.0.1" 1724 | jsonify "~0.0.0" 1725 | resumer "~0.0.0" 1726 | through "~2.3.4" 1727 | 1728 | tar-fs@^1.13.0: 1729 | version "1.16.3" 1730 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" 1731 | dependencies: 1732 | chownr "^1.0.1" 1733 | mkdirp "^0.5.1" 1734 | pump "^1.0.0" 1735 | tar-stream "^1.1.2" 1736 | 1737 | tar-stream@^1.1.2: 1738 | version "1.6.2" 1739 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" 1740 | dependencies: 1741 | bl "^1.0.0" 1742 | buffer-alloc "^1.2.0" 1743 | end-of-stream "^1.0.0" 1744 | fs-constants "^1.0.0" 1745 | readable-stream "^2.3.0" 1746 | to-buffer "^1.1.1" 1747 | xtend "^4.0.0" 1748 | 1749 | terser@^3.14.1: 1750 | version "3.16.1" 1751 | resolved "https://registry.yarnpkg.com/terser/-/terser-3.16.1.tgz#5b0dd4fa1ffd0b0b43c2493b2c364fd179160493" 1752 | dependencies: 1753 | commander "~2.17.1" 1754 | source-map "~0.6.1" 1755 | source-map-support "~0.5.9" 1756 | 1757 | test-exclude@^5.1.0: 1758 | version "5.1.0" 1759 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz#6ba6b25179d2d38724824661323b73e03c0c1de1" 1760 | dependencies: 1761 | arrify "^1.0.1" 1762 | minimatch "^3.0.4" 1763 | read-pkg-up "^4.0.0" 1764 | require-main-filename "^1.0.1" 1765 | 1766 | through2@~0.2.3: 1767 | version "0.2.3" 1768 | resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f" 1769 | dependencies: 1770 | readable-stream "~1.1.9" 1771 | xtend "~2.1.1" 1772 | 1773 | through@~2.3.4: 1774 | version "2.3.8" 1775 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1776 | 1777 | tiny-human-time@^1.2.0: 1778 | version "1.2.0" 1779 | resolved "https://registry.yarnpkg.com/tiny-human-time/-/tiny-human-time-1.2.0.tgz#0c4a425940e053e2d31d903d6f03d38cfb977860" 1780 | 1781 | tinytim@0.1.1: 1782 | version "0.1.1" 1783 | resolved "https://registry.yarnpkg.com/tinytim/-/tinytim-0.1.1.tgz#c968a1e5559ad9553224ef7627bab34e3caef8a8" 1784 | 1785 | tmatch@^4.0.0: 1786 | version "4.0.0" 1787 | resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-4.0.0.tgz#ba178007f30bf6a70f37c643fca5045fb2f8c448" 1788 | 1789 | to-buffer@^1.1.1: 1790 | version "1.1.1" 1791 | resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" 1792 | 1793 | to-fast-properties@^2.0.0: 1794 | version "2.0.0" 1795 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1796 | 1797 | tough-cookie@~2.4.3: 1798 | version "2.4.3" 1799 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 1800 | dependencies: 1801 | psl "^1.1.24" 1802 | punycode "^1.4.1" 1803 | 1804 | tracer@^0.8.7: 1805 | version "0.8.15" 1806 | resolved "https://registry.yarnpkg.com/tracer/-/tracer-0.8.15.tgz#c4bb5b8c788ed3d7106c081288e22fd5a5abc474" 1807 | dependencies: 1808 | colors "1.2.3" 1809 | dateformat "3.0.3" 1810 | mkdirp "^0.5.1" 1811 | tinytim "0.1.1" 1812 | 1813 | trim-right@^1.0.1: 1814 | version "1.0.1" 1815 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 1816 | 1817 | trivial-deferred@^1.0.1: 1818 | version "1.0.1" 1819 | resolved "https://registry.yarnpkg.com/trivial-deferred/-/trivial-deferred-1.0.1.tgz#376d4d29d951d6368a6f7a0ae85c2f4d5e0658f3" 1820 | 1821 | ts-node@^8.0.2: 1822 | version "8.0.2" 1823 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.0.2.tgz#9ecdf8d782a0ca4c80d1d641cbb236af4ac1b756" 1824 | dependencies: 1825 | arg "^4.1.0" 1826 | diff "^3.1.0" 1827 | make-error "^1.1.1" 1828 | source-map-support "^0.5.6" 1829 | yn "^3.0.0" 1830 | 1831 | tsame@^2.0.1: 1832 | version "2.0.1" 1833 | resolved "https://registry.yarnpkg.com/tsame/-/tsame-2.0.1.tgz#70410ddbefcd29c61e2d68549b3347b0444d613f" 1834 | 1835 | tunnel-agent@^0.6.0: 1836 | version "0.6.0" 1837 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1838 | dependencies: 1839 | safe-buffer "^5.0.1" 1840 | 1841 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1842 | version "0.14.5" 1843 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1844 | 1845 | typescript@^3.3.3: 1846 | version "3.3.3" 1847 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3.tgz#f1657fc7daa27e1a8930758ace9ae8da31403221" 1848 | 1849 | uglify-js@^3.1.4: 1850 | version "3.4.9" 1851 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" 1852 | dependencies: 1853 | commander "~2.17.1" 1854 | source-map "~0.6.1" 1855 | 1856 | ultron@~1.1.0: 1857 | version "1.1.1" 1858 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" 1859 | 1860 | unicode-length@^1.0.0: 1861 | version "1.0.3" 1862 | resolved "https://registry.yarnpkg.com/unicode-length/-/unicode-length-1.0.3.tgz#5ada7a7fed51841a418a328cf149478ac8358abb" 1863 | dependencies: 1864 | punycode "^1.3.2" 1865 | strip-ansi "^3.0.1" 1866 | 1867 | universalify@^0.1.0: 1868 | version "0.1.2" 1869 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1870 | 1871 | uri-js@^4.2.2: 1872 | version "4.2.2" 1873 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1874 | dependencies: 1875 | punycode "^2.1.0" 1876 | 1877 | util-deprecate@~1.0.1: 1878 | version "1.0.2" 1879 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1880 | 1881 | uuid@^3.3.2: 1882 | version "3.3.2" 1883 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 1884 | 1885 | validate-npm-package-license@^3.0.1: 1886 | version "3.0.4" 1887 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1888 | dependencies: 1889 | spdx-correct "^3.0.0" 1890 | spdx-expression-parse "^3.0.0" 1891 | 1892 | verror@1.10.0: 1893 | version "1.10.0" 1894 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 1895 | dependencies: 1896 | assert-plus "^1.0.0" 1897 | core-util-is "1.0.2" 1898 | extsprintf "^1.2.0" 1899 | 1900 | which-module@^2.0.0: 1901 | version "2.0.0" 1902 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1903 | 1904 | which-pm-runs@^1.0.0: 1905 | version "1.0.0" 1906 | resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" 1907 | 1908 | which@^1.2.9, which@^1.3.0: 1909 | version "1.3.1" 1910 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1911 | dependencies: 1912 | isexe "^2.0.0" 1913 | 1914 | wide-align@^1.1.0: 1915 | version "1.1.3" 1916 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1917 | dependencies: 1918 | string-width "^1.0.2 || 2" 1919 | 1920 | wordwrap@~0.0.2: 1921 | version "0.0.3" 1922 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 1923 | 1924 | wrap-ansi@^2.0.0: 1925 | version "2.1.0" 1926 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 1927 | dependencies: 1928 | string-width "^1.0.1" 1929 | strip-ansi "^3.0.1" 1930 | 1931 | wrappy@1: 1932 | version "1.0.2" 1933 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1934 | 1935 | write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: 1936 | version "2.4.2" 1937 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" 1938 | dependencies: 1939 | graceful-fs "^4.1.11" 1940 | imurmurhash "^0.1.4" 1941 | signal-exit "^3.0.2" 1942 | 1943 | ws@^2.3.1: 1944 | version "2.3.1" 1945 | resolved "https://registry.yarnpkg.com/ws/-/ws-2.3.1.tgz#6b94b3e447cb6a363f785eaf94af6359e8e81c80" 1946 | dependencies: 1947 | safe-buffer "~5.0.1" 1948 | ultron "~1.1.0" 1949 | 1950 | xtend@^4.0.0: 1951 | version "4.0.1" 1952 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1953 | 1954 | xtend@~2.1.1: 1955 | version "2.1.2" 1956 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" 1957 | dependencies: 1958 | object-keys "~0.4.0" 1959 | 1960 | "y18n@^3.2.1 || ^4.0.0": 1961 | version "4.0.0" 1962 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 1963 | 1964 | yallist@^2.1.2: 1965 | version "2.1.2" 1966 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 1967 | 1968 | yallist@^3.0.0: 1969 | version "3.0.3" 1970 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" 1971 | 1972 | yapool@^1.0.0: 1973 | version "1.0.0" 1974 | resolved "https://registry.yarnpkg.com/yapool/-/yapool-1.0.0.tgz#f693f29a315b50d9a9da2646a7a6645c96985b6a" 1975 | 1976 | yargs-parser@^11.1.1: 1977 | version "11.1.1" 1978 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" 1979 | dependencies: 1980 | camelcase "^5.0.0" 1981 | decamelize "^1.2.0" 1982 | 1983 | yargs@^12.0.5: 1984 | version "12.0.5" 1985 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" 1986 | dependencies: 1987 | cliui "^4.0.0" 1988 | decamelize "^1.2.0" 1989 | find-up "^3.0.0" 1990 | get-caller-file "^1.0.1" 1991 | os-locale "^3.0.0" 1992 | require-directory "^2.1.1" 1993 | require-main-filename "^1.0.1" 1994 | set-blocking "^2.0.0" 1995 | string-width "^2.0.0" 1996 | which-module "^2.0.0" 1997 | y18n "^3.2.1 || ^4.0.0" 1998 | yargs-parser "^11.1.1" 1999 | 2000 | yn@^3.0.0: 2001 | version "3.0.0" 2002 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.0.0.tgz#0073c6b56e92aed652fbdfd62431f2d6b9a7a091" 2003 | --------------------------------------------------------------------------------