├── .eslintrc.js ├── .gitignore ├── .travis.yml ├── README.md ├── index.js ├── package.json ├── rewrite.js ├── stubber.js ├── tests ├── .eslintrc.js ├── eslint-test.js └── rewrite-test.js └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | parserOptions: { 3 | ecmaVersion: 8 4 | }, 5 | extends: 'eslint:recommended', 6 | env: { 7 | 'node': true 8 | }, 9 | rules: { 10 | 'no-constant-condition': ["error", { checkLoops: false }], 11 | 'require-yield': 0, 12 | 'no-var': "error", 13 | semi: ["error", "always"] 14 | }, 15 | globals: { 16 | Promise: false, 17 | Map: false, 18 | WeakMap: false, 19 | Symbol: false 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: node_js 3 | node_js: 4 | - "7" 5 | 6 | sudo: false 7 | 8 | cache: 9 | yarn 10 | 11 | install: 12 | - yarn install 13 | 14 | script: 15 | - yarn test 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # async-repl 2 | 3 | This uses the native async/await support in Node 7.x and newer to let you `await` promises in the repl ("read-eval-print-loop" -- the interactive Node command line). 4 | 5 | ## Native Alternative in Node 10 6 | 7 | Note: Node 10 added the command line flag `--experimental-repl-await` which allows await support. That may be a good option for new projects or usages. 8 | 9 | ## Install 10 | 11 | `npm install -g async-repl` 12 | 13 | ## Examples 14 | 15 | ``` 16 | $ async-repl 17 | async> 1 + 2 18 | 3 19 | async> 1 + await new Promise(r => setTimeout(() => r(2), 1000)) 20 | 3 21 | async> let x = 1 + await new Promise(r => setTimeout(() => r(2), 1000)) 22 | undefined 23 | async> x 24 | 3 25 | async> 26 | ``` 27 | 28 | ```js 29 | const repl = require('repl'); 30 | const stubber = require('async-repl/stubber'); 31 | const replInstance = repl.start({ prompt: 'my-fancy-repl> ' }); 32 | stubber(replInstance); 33 | ``` 34 | 35 | ## Caveats 36 | 37 | * This tool doesn't support multi-line input. 38 | * Top-level object destructuring assignment like: 39 | 40 | let { x } = await someThing() 41 | 42 | doesn't currently work due to a bug in `recast` (see test suite), but you can workaround like: 43 | 44 | ({x} = await someThing()) 45 | 46 | * We necessarily resolve the top-level expression promise for you, so if you don't want to wait for resolution you should make sure you're not returning the promise as an expression. 47 | 48 | # This will not block because it's a statement 49 | let myPromise = makePromise() 50 | 51 | # This will block because it's an expression 52 | otherPromise = makePromise() 53 | 54 | # This will block because now we're using the promise value as an expression 55 | myPromise 56 | 57 | * `const` variables in the repl scope can be overridden 58 | 59 | async> const a = 1 60 | undefined 61 | async> a = 2 62 | 2 63 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const repl = require('repl'); 4 | const stubber = require('./stubber'); 5 | const replInstance = repl.start({ prompt: 'async> ' }); 6 | stubber(replInstance); 7 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "async-repl", 3 | "version": "0.4.0", 4 | "description": "Node repl that supports \"await\".", 5 | "bin": { 6 | "async-repl": "index.js" 7 | }, 8 | "scripts": { 9 | "test": "mocha tests" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/ef4/async-repl.git" 14 | }, 15 | "keywords": [ 16 | "async", 17 | "repl", 18 | "promise", 19 | "await" 20 | ], 21 | "author": "Edward Faulkner ", 22 | "license": "MIT", 23 | "bugs": { 24 | "url": "https://github.com/ef4/async-repl/issues" 25 | }, 26 | "homepage": "https://github.com/ef4/async-repl#readme", 27 | "dependencies": { 28 | "babylon": "^6.17.3", 29 | "debug": "^2.6.8", 30 | "recast": "^0.12.5", 31 | "repl.history": "^0.1.4" 32 | }, 33 | "devDependencies": { 34 | "chai": "^4.0.2", 35 | "mocha": "^3.4.2", 36 | "mocha-eslint": "^3.0.1" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /rewrite.js: -------------------------------------------------------------------------------- 1 | const recast = require('recast'); 2 | const parser = require('babylon'); 3 | 4 | function withinAsyncContext(c) { 5 | return `(async () => { ${c} })()`; 6 | } 7 | 8 | function leakLocals(nodes) { 9 | return nodes.map(node => { 10 | if (node.type !== 'VariableDeclaration') { 11 | return node; 12 | } 13 | return { 14 | type: 'ExpressionStatement', 15 | expression: { 16 | type: 'SequenceExpression', 17 | expressions: node.declarations.map(declaration => ({ 18 | type: 'AssignmentExpression', 19 | operator: '=', 20 | left: declaration.id, 21 | right: declaration.init 22 | })) 23 | } 24 | }; 25 | }); 26 | } 27 | 28 | module.exports = function(code) { 29 | let ast = recast.parse(withinAsyncContext(code), { parser }); 30 | let userBlock = ast.program.body[0].expression.callee.body; 31 | let userCode = userBlock.body; 32 | if (userCode.length > 0 && userCode[userCode.length - 1].type === 'ExpressionStatement') { 33 | userCode[userCode.length - 1] = { 34 | type: 'ReturnStatement', 35 | argument: userCode[userCode.length - 1] 36 | }; 37 | } 38 | userBlock.body = leakLocals(userCode); 39 | return recast.print(ast).code; 40 | }; 41 | -------------------------------------------------------------------------------- /stubber.js: -------------------------------------------------------------------------------- 1 | const history = require('repl.history'); 2 | const os = require('os'); 3 | const path = require('path'); 4 | const historyFile = path.join(os.homedir(), '.async_repl_history'); 5 | const rewrite = require('./rewrite'); 6 | 7 | module.exports = function(repl){ 8 | const originalEval = repl.eval; 9 | history(repl, historyFile); 10 | repl.eval = awaitingEval; 11 | 12 | function awaitingEval(cmd, context, filename, callback) { 13 | try { 14 | cmd = rewrite(cmd); 15 | } catch (err) { 16 | callback(err); 17 | } 18 | originalEval.call(this, cmd, context, filename, async function(err,value) { 19 | if (err) { 20 | callback.call(this, err, null); 21 | } else { 22 | try { 23 | value = await value; 24 | callback.call(this, err, value); 25 | } catch (error) { 26 | callback.call(this, error, null); 27 | } 28 | } 29 | }); 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /tests/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | globals: { 3 | describe: false, 4 | it: false, 5 | beforeEach: false, 6 | afterEach: false, 7 | before: false, 8 | after: false 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /tests/eslint-test.js: -------------------------------------------------------------------------------- 1 | const lint = require('mocha-eslint'); 2 | lint([__dirname + '/..']); 3 | -------------------------------------------------------------------------------- /tests/rewrite-test.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai'); 2 | const rewrite = require('../rewrite'); 3 | const vm = require('vm'); 4 | 5 | describe("async rewriting", function() { 6 | 7 | let context; 8 | 9 | beforeEach(function() { 10 | context = {}; 11 | vm.createContext(context); 12 | }); 13 | 14 | function rewriteAndRun(code) { 15 | let script = vm.createScript(rewrite(code)); 16 | return script.runInContext(context, { displayErrors: true }); 17 | } 18 | 19 | it("supports regular assignments", async function() { 20 | let value = await rewriteAndRun('let x = 1'); 21 | expect(value).not.ok; 22 | expect(context.x).to.equal(1); 23 | }); 24 | 25 | it("supports async assignments", async function() { 26 | let value = await rewriteAndRun('let x = await 1'); 27 | expect(value).not.ok; 28 | expect(context.x).to.equal(1); 29 | }); 30 | 31 | it("supports multiple statements", async function() { 32 | let value = await rewriteAndRun('let x = await 1; let y = await 2; x + y'); 33 | expect(value).to.equal(3); 34 | expect(context.x).to.equal(1); 35 | expect(context.y).to.equal(2); 36 | }); 37 | 38 | it("supports plain expressions", async function() { 39 | let value = await rewriteAndRun('1 + 2'); 40 | expect(value).to.equal(3); 41 | }); 42 | 43 | it("supports expressions with top-level await", async function() { 44 | let value = await rewriteAndRun('await (1 + 2)'); 45 | expect(value).to.equal(3); 46 | }); 47 | 48 | 49 | it("supports expressions with embedded await", async function() { 50 | let value = await rewriteAndRun('await 1 + await 2'); 51 | expect(value).to.equal(3); 52 | }); 53 | 54 | it("supports await within object literal", async function() { 55 | let value = await rewriteAndRun('({ a : await 1 })'); 56 | expect(value).to.deep.equal({ a: 1 }); 57 | }); 58 | 59 | // This test fails because of 60 | // https://github.com/benjamn/recast/issues/412 61 | it.skip("supports object destructuring assignment", async function() { 62 | let value = await rewriteAndRun('let { a, b } = { a: 1, b: await 2 }'); 63 | expect(value).not.ok; 64 | expect(context.a).to.equal(1); 65 | expect(context.b).to.equal(2); 66 | }); 67 | 68 | it("supports array destructuring assignment", async function() { 69 | let value = await rewriteAndRun('let [ a, b, ...c ] = [1, await 2, 3, await 4]'); 70 | expect(value).not.ok; 71 | expect(context.a).to.equal(1); 72 | expect(context.b).to.equal(2); 73 | expect(context.c).to.deep.equal([3,4]); 74 | }); 75 | 76 | it("allows you to access an unresolved promise via a local variable", async function() { 77 | let value = await rewriteAndRun('let p = new Promise(() => {})'); 78 | expect(value).not.ok; 79 | expect(context.p).property('then').is.a('function'); 80 | }); 81 | 82 | it("can access a property after awaiting", async function() { 83 | let value = await rewriteAndRun('(await new Promise(r => r({ x : 1}))).x'); 84 | expect(value).to.equal(1); 85 | }); 86 | 87 | }); 88 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | acorn-jsx@^3.0.0: 6 | version "3.0.1" 7 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 8 | dependencies: 9 | acorn "^3.0.4" 10 | 11 | acorn@^3.0.4: 12 | version "3.3.0" 13 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 14 | 15 | acorn@^5.0.1: 16 | version "5.0.3" 17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" 18 | 19 | ajv-keywords@^1.0.0: 20 | version "1.5.1" 21 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 22 | 23 | ajv@^4.7.0: 24 | version "4.11.8" 25 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" 26 | dependencies: 27 | co "^4.6.0" 28 | json-stable-stringify "^1.0.1" 29 | 30 | ansi-escapes@^1.1.0: 31 | version "1.4.0" 32 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 33 | 34 | ansi-regex@^2.0.0: 35 | version "2.1.1" 36 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 37 | 38 | ansi-styles@^2.2.1: 39 | version "2.2.1" 40 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 41 | 42 | argparse@^1.0.7: 43 | version "1.0.9" 44 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 45 | dependencies: 46 | sprintf-js "~1.0.2" 47 | 48 | array-union@^1.0.1: 49 | version "1.0.2" 50 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 51 | dependencies: 52 | array-uniq "^1.0.1" 53 | 54 | array-uniq@^1.0.1: 55 | version "1.0.3" 56 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 57 | 58 | arrify@^1.0.0: 59 | version "1.0.1" 60 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 61 | 62 | assertion-error@^1.0.1: 63 | version "1.0.2" 64 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" 65 | 66 | ast-types@0.9.11: 67 | version "0.9.11" 68 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.11.tgz#371177bb59232ff5ceaa1d09ee5cad705b1a5aa9" 69 | 70 | babel-code-frame@^6.16.0: 71 | version "6.22.0" 72 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" 73 | dependencies: 74 | chalk "^1.1.0" 75 | esutils "^2.0.2" 76 | js-tokens "^3.0.0" 77 | 78 | babylon@^6.17.3: 79 | version "6.17.3" 80 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.3.tgz#1327d709950b558f204e5352587fd0290f8d8e48" 81 | 82 | balanced-match@^1.0.0: 83 | version "1.0.0" 84 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 85 | 86 | brace-expansion@^1.1.7: 87 | version "1.1.8" 88 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 89 | dependencies: 90 | balanced-match "^1.0.0" 91 | concat-map "0.0.1" 92 | 93 | browser-stdout@1.3.0: 94 | version "1.3.0" 95 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" 96 | 97 | caller-path@^0.1.0: 98 | version "0.1.0" 99 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 100 | dependencies: 101 | callsites "^0.2.0" 102 | 103 | callsites@^0.2.0: 104 | version "0.2.0" 105 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 106 | 107 | chai@^4.0.2: 108 | version "4.0.2" 109 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.0.2.tgz#2f7327c4de6f385dd7787999e2ab02697a32b83b" 110 | dependencies: 111 | assertion-error "^1.0.1" 112 | check-error "^1.0.1" 113 | deep-eql "^2.0.1" 114 | get-func-name "^2.0.0" 115 | pathval "^1.0.0" 116 | type-detect "^4.0.0" 117 | 118 | chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: 119 | version "1.1.3" 120 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 121 | dependencies: 122 | ansi-styles "^2.2.1" 123 | escape-string-regexp "^1.0.2" 124 | has-ansi "^2.0.0" 125 | strip-ansi "^3.0.0" 126 | supports-color "^2.0.0" 127 | 128 | check-error@^1.0.1: 129 | version "1.0.2" 130 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 131 | 132 | circular-json@^0.3.1: 133 | version "0.3.1" 134 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" 135 | 136 | cli-cursor@^1.0.1: 137 | version "1.0.2" 138 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 139 | dependencies: 140 | restore-cursor "^1.0.1" 141 | 142 | cli-width@^2.0.0: 143 | version "2.1.0" 144 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" 145 | 146 | co@^4.6.0: 147 | version "4.6.0" 148 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 149 | 150 | code-point-at@^1.0.0: 151 | version "1.1.0" 152 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 153 | 154 | commander@2.9.0: 155 | version "2.9.0" 156 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 157 | dependencies: 158 | graceful-readlink ">= 1.0.0" 159 | 160 | concat-map@0.0.1: 161 | version "0.0.1" 162 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 163 | 164 | concat-stream@^1.5.2: 165 | version "1.6.0" 166 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 167 | dependencies: 168 | inherits "^2.0.3" 169 | readable-stream "^2.2.2" 170 | typedarray "^0.0.6" 171 | 172 | core-js@^2.4.1: 173 | version "2.4.1" 174 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" 175 | 176 | core-util-is@~1.0.0: 177 | version "1.0.2" 178 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 179 | 180 | d@1: 181 | version "1.0.0" 182 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" 183 | dependencies: 184 | es5-ext "^0.10.9" 185 | 186 | debug@2.6.0: 187 | version "2.6.0" 188 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" 189 | dependencies: 190 | ms "0.7.2" 191 | 192 | debug@^2.1.1, debug@^2.6.8: 193 | version "2.6.8" 194 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" 195 | dependencies: 196 | ms "2.0.0" 197 | 198 | deep-eql@^2.0.1: 199 | version "2.0.2" 200 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-2.0.2.tgz#b1bac06e56f0a76777686d50c9feb75c2ed7679a" 201 | dependencies: 202 | type-detect "^3.0.0" 203 | 204 | deep-is@~0.1.3: 205 | version "0.1.3" 206 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 207 | 208 | del@^2.0.2: 209 | version "2.2.2" 210 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 211 | dependencies: 212 | globby "^5.0.0" 213 | is-path-cwd "^1.0.0" 214 | is-path-in-cwd "^1.0.0" 215 | object-assign "^4.0.1" 216 | pify "^2.0.0" 217 | pinkie-promise "^2.0.0" 218 | rimraf "^2.2.8" 219 | 220 | diff@3.2.0: 221 | version "3.2.0" 222 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" 223 | 224 | doctrine@^2.0.0: 225 | version "2.0.0" 226 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" 227 | dependencies: 228 | esutils "^2.0.2" 229 | isarray "^1.0.0" 230 | 231 | es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: 232 | version "0.10.23" 233 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.23.tgz#7578b51be974207a5487821b56538c224e4e7b38" 234 | dependencies: 235 | es6-iterator "2" 236 | es6-symbol "~3.1" 237 | 238 | es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: 239 | version "2.0.1" 240 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" 241 | dependencies: 242 | d "1" 243 | es5-ext "^0.10.14" 244 | es6-symbol "^3.1" 245 | 246 | es6-map@^0.1.3: 247 | version "0.1.5" 248 | resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" 249 | dependencies: 250 | d "1" 251 | es5-ext "~0.10.14" 252 | es6-iterator "~2.0.1" 253 | es6-set "~0.1.5" 254 | es6-symbol "~3.1.1" 255 | event-emitter "~0.3.5" 256 | 257 | es6-set@~0.1.5: 258 | version "0.1.5" 259 | resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" 260 | dependencies: 261 | d "1" 262 | es5-ext "~0.10.14" 263 | es6-iterator "~2.0.1" 264 | es6-symbol "3.1.1" 265 | event-emitter "~0.3.5" 266 | 267 | es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: 268 | version "3.1.1" 269 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" 270 | dependencies: 271 | d "1" 272 | es5-ext "~0.10.14" 273 | 274 | es6-weak-map@^2.0.1: 275 | version "2.0.2" 276 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" 277 | dependencies: 278 | d "1" 279 | es5-ext "^0.10.14" 280 | es6-iterator "^2.0.1" 281 | es6-symbol "^3.1.1" 282 | 283 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 284 | version "1.0.5" 285 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 286 | 287 | escope@^3.6.0: 288 | version "3.6.0" 289 | resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" 290 | dependencies: 291 | es6-map "^0.1.3" 292 | es6-weak-map "^2.0.1" 293 | esrecurse "^4.1.0" 294 | estraverse "^4.1.1" 295 | 296 | eslint@^3.0.0: 297 | version "3.19.0" 298 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" 299 | dependencies: 300 | babel-code-frame "^6.16.0" 301 | chalk "^1.1.3" 302 | concat-stream "^1.5.2" 303 | debug "^2.1.1" 304 | doctrine "^2.0.0" 305 | escope "^3.6.0" 306 | espree "^3.4.0" 307 | esquery "^1.0.0" 308 | estraverse "^4.2.0" 309 | esutils "^2.0.2" 310 | file-entry-cache "^2.0.0" 311 | glob "^7.0.3" 312 | globals "^9.14.0" 313 | ignore "^3.2.0" 314 | imurmurhash "^0.1.4" 315 | inquirer "^0.12.0" 316 | is-my-json-valid "^2.10.0" 317 | is-resolvable "^1.0.0" 318 | js-yaml "^3.5.1" 319 | json-stable-stringify "^1.0.0" 320 | levn "^0.3.0" 321 | lodash "^4.0.0" 322 | mkdirp "^0.5.0" 323 | natural-compare "^1.4.0" 324 | optionator "^0.8.2" 325 | path-is-inside "^1.0.1" 326 | pluralize "^1.2.1" 327 | progress "^1.1.8" 328 | require-uncached "^1.0.2" 329 | shelljs "^0.7.5" 330 | strip-bom "^3.0.0" 331 | strip-json-comments "~2.0.1" 332 | table "^3.7.8" 333 | text-table "~0.2.0" 334 | user-home "^2.0.0" 335 | 336 | espree@^3.4.0: 337 | version "3.4.3" 338 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" 339 | dependencies: 340 | acorn "^5.0.1" 341 | acorn-jsx "^3.0.0" 342 | 343 | esprima@^3.1.1, esprima@~3.1.0: 344 | version "3.1.3" 345 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 346 | 347 | esquery@^1.0.0: 348 | version "1.0.0" 349 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" 350 | dependencies: 351 | estraverse "^4.0.0" 352 | 353 | esrecurse@^4.1.0: 354 | version "4.1.0" 355 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" 356 | dependencies: 357 | estraverse "~4.1.0" 358 | object-assign "^4.0.1" 359 | 360 | estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: 361 | version "4.2.0" 362 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 363 | 364 | estraverse@~4.1.0: 365 | version "4.1.1" 366 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" 367 | 368 | esutils@^2.0.2: 369 | version "2.0.2" 370 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 371 | 372 | event-emitter@~0.3.5: 373 | version "0.3.5" 374 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 375 | dependencies: 376 | d "1" 377 | es5-ext "~0.10.14" 378 | 379 | exit-hook@^1.0.0: 380 | version "1.1.1" 381 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 382 | 383 | fast-levenshtein@~2.0.4: 384 | version "2.0.6" 385 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 386 | 387 | figures@^1.3.5: 388 | version "1.7.0" 389 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 390 | dependencies: 391 | escape-string-regexp "^1.0.5" 392 | object-assign "^4.1.0" 393 | 394 | file-entry-cache@^2.0.0: 395 | version "2.0.0" 396 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 397 | dependencies: 398 | flat-cache "^1.2.1" 399 | object-assign "^4.0.1" 400 | 401 | flat-cache@^1.2.1: 402 | version "1.2.2" 403 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" 404 | dependencies: 405 | circular-json "^0.3.1" 406 | del "^2.0.2" 407 | graceful-fs "^4.1.2" 408 | write "^0.2.1" 409 | 410 | fs.realpath@^1.0.0: 411 | version "1.0.0" 412 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 413 | 414 | generate-function@^2.0.0: 415 | version "2.0.0" 416 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 417 | 418 | generate-object-property@^1.1.0: 419 | version "1.2.0" 420 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 421 | dependencies: 422 | is-property "^1.0.0" 423 | 424 | get-func-name@^2.0.0: 425 | version "2.0.0" 426 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 427 | 428 | glob-all@^3.0.1: 429 | version "3.1.0" 430 | resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" 431 | dependencies: 432 | glob "^7.0.5" 433 | yargs "~1.2.6" 434 | 435 | glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: 436 | version "7.1.1" 437 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 438 | dependencies: 439 | fs.realpath "^1.0.0" 440 | inflight "^1.0.4" 441 | inherits "2" 442 | minimatch "^3.0.2" 443 | once "^1.3.0" 444 | path-is-absolute "^1.0.0" 445 | 446 | globals@^9.14.0: 447 | version "9.18.0" 448 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 449 | 450 | globby@^5.0.0: 451 | version "5.0.0" 452 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 453 | dependencies: 454 | array-union "^1.0.1" 455 | arrify "^1.0.0" 456 | glob "^7.0.3" 457 | object-assign "^4.0.1" 458 | pify "^2.0.0" 459 | pinkie-promise "^2.0.0" 460 | 461 | graceful-fs@^4.1.2: 462 | version "4.1.11" 463 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 464 | 465 | "graceful-readlink@>= 1.0.0": 466 | version "1.0.1" 467 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 468 | 469 | growl@1.9.2: 470 | version "1.9.2" 471 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" 472 | 473 | has-ansi@^2.0.0: 474 | version "2.0.0" 475 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 476 | dependencies: 477 | ansi-regex "^2.0.0" 478 | 479 | has-flag@^1.0.0: 480 | version "1.0.0" 481 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 482 | 483 | ignore@^3.2.0: 484 | version "3.3.3" 485 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" 486 | 487 | imurmurhash@^0.1.4: 488 | version "0.1.4" 489 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 490 | 491 | inflight@^1.0.4: 492 | version "1.0.6" 493 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 494 | dependencies: 495 | once "^1.3.0" 496 | wrappy "1" 497 | 498 | inherits@2, inherits@^2.0.3, inherits@~2.0.1: 499 | version "2.0.3" 500 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 501 | 502 | inquirer@^0.12.0: 503 | version "0.12.0" 504 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" 505 | dependencies: 506 | ansi-escapes "^1.1.0" 507 | ansi-regex "^2.0.0" 508 | chalk "^1.0.0" 509 | cli-cursor "^1.0.1" 510 | cli-width "^2.0.0" 511 | figures "^1.3.5" 512 | lodash "^4.3.0" 513 | readline2 "^1.0.1" 514 | run-async "^0.1.0" 515 | rx-lite "^3.1.2" 516 | string-width "^1.0.1" 517 | strip-ansi "^3.0.0" 518 | through "^2.3.6" 519 | 520 | interpret@^1.0.0: 521 | version "1.0.3" 522 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" 523 | 524 | is-fullwidth-code-point@^1.0.0: 525 | version "1.0.0" 526 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 527 | dependencies: 528 | number-is-nan "^1.0.0" 529 | 530 | is-fullwidth-code-point@^2.0.0: 531 | version "2.0.0" 532 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 533 | 534 | is-my-json-valid@^2.10.0: 535 | version "2.16.0" 536 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" 537 | dependencies: 538 | generate-function "^2.0.0" 539 | generate-object-property "^1.1.0" 540 | jsonpointer "^4.0.0" 541 | xtend "^4.0.0" 542 | 543 | is-path-cwd@^1.0.0: 544 | version "1.0.0" 545 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 546 | 547 | is-path-in-cwd@^1.0.0: 548 | version "1.0.0" 549 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 550 | dependencies: 551 | is-path-inside "^1.0.0" 552 | 553 | is-path-inside@^1.0.0: 554 | version "1.0.0" 555 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 556 | dependencies: 557 | path-is-inside "^1.0.1" 558 | 559 | is-property@^1.0.0: 560 | version "1.0.2" 561 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 562 | 563 | is-resolvable@^1.0.0: 564 | version "1.0.0" 565 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 566 | dependencies: 567 | tryit "^1.0.1" 568 | 569 | isarray@^1.0.0, isarray@~1.0.0: 570 | version "1.0.0" 571 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 572 | 573 | js-tokens@^3.0.0: 574 | version "3.0.1" 575 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" 576 | 577 | js-yaml@^3.5.1: 578 | version "3.8.4" 579 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" 580 | dependencies: 581 | argparse "^1.0.7" 582 | esprima "^3.1.1" 583 | 584 | json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: 585 | version "1.0.1" 586 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 587 | dependencies: 588 | jsonify "~0.0.0" 589 | 590 | json3@3.3.2: 591 | version "3.3.2" 592 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" 593 | 594 | jsonify@~0.0.0: 595 | version "0.0.0" 596 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 597 | 598 | jsonpointer@^4.0.0: 599 | version "4.0.1" 600 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 601 | 602 | levn@^0.3.0, levn@~0.3.0: 603 | version "0.3.0" 604 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 605 | dependencies: 606 | prelude-ls "~1.1.2" 607 | type-check "~0.3.2" 608 | 609 | lodash._baseassign@^3.0.0: 610 | version "3.2.0" 611 | resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" 612 | dependencies: 613 | lodash._basecopy "^3.0.0" 614 | lodash.keys "^3.0.0" 615 | 616 | lodash._basecopy@^3.0.0: 617 | version "3.0.1" 618 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" 619 | 620 | lodash._basecreate@^3.0.0: 621 | version "3.0.3" 622 | resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" 623 | 624 | lodash._getnative@^3.0.0: 625 | version "3.9.1" 626 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" 627 | 628 | lodash._isiterateecall@^3.0.0: 629 | version "3.0.9" 630 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" 631 | 632 | lodash.create@3.1.1: 633 | version "3.1.1" 634 | resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" 635 | dependencies: 636 | lodash._baseassign "^3.0.0" 637 | lodash._basecreate "^3.0.0" 638 | lodash._isiterateecall "^3.0.0" 639 | 640 | lodash.isarguments@^3.0.0: 641 | version "3.1.0" 642 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" 643 | 644 | lodash.isarray@^3.0.0: 645 | version "3.0.4" 646 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" 647 | 648 | lodash.keys@^3.0.0: 649 | version "3.1.2" 650 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" 651 | dependencies: 652 | lodash._getnative "^3.0.0" 653 | lodash.isarguments "^3.0.0" 654 | lodash.isarray "^3.0.0" 655 | 656 | lodash@^4.0.0, lodash@^4.3.0: 657 | version "4.17.4" 658 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 659 | 660 | minimatch@^3.0.2: 661 | version "3.0.4" 662 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 663 | dependencies: 664 | brace-expansion "^1.1.7" 665 | 666 | minimist@0.0.8: 667 | version "0.0.8" 668 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 669 | 670 | minimist@^0.1.0: 671 | version "0.1.0" 672 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" 673 | 674 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: 675 | version "0.5.1" 676 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 677 | dependencies: 678 | minimist "0.0.8" 679 | 680 | mocha-eslint@^3.0.1: 681 | version "3.0.1" 682 | resolved "https://registry.yarnpkg.com/mocha-eslint/-/mocha-eslint-3.0.1.tgz#ae72abc561cb289d2e6c143788ee182aca1a04db" 683 | dependencies: 684 | chalk "^1.1.0" 685 | eslint "^3.0.0" 686 | glob-all "^3.0.1" 687 | replaceall "^0.1.6" 688 | 689 | mocha@^3.4.2: 690 | version "3.4.2" 691 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594" 692 | dependencies: 693 | browser-stdout "1.3.0" 694 | commander "2.9.0" 695 | debug "2.6.0" 696 | diff "3.2.0" 697 | escape-string-regexp "1.0.5" 698 | glob "7.1.1" 699 | growl "1.9.2" 700 | json3 "3.3.2" 701 | lodash.create "3.1.1" 702 | mkdirp "0.5.1" 703 | supports-color "3.1.2" 704 | 705 | ms@0.7.2: 706 | version "0.7.2" 707 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 708 | 709 | ms@2.0.0: 710 | version "2.0.0" 711 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 712 | 713 | mute-stream@0.0.5: 714 | version "0.0.5" 715 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" 716 | 717 | natural-compare@^1.4.0: 718 | version "1.4.0" 719 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 720 | 721 | number-is-nan@^1.0.0: 722 | version "1.0.1" 723 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 724 | 725 | object-assign@^4.0.1, object-assign@^4.1.0: 726 | version "4.1.1" 727 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 728 | 729 | once@^1.3.0: 730 | version "1.4.0" 731 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 732 | dependencies: 733 | wrappy "1" 734 | 735 | onetime@^1.0.0: 736 | version "1.1.0" 737 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 738 | 739 | optionator@^0.8.2: 740 | version "0.8.2" 741 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 742 | dependencies: 743 | deep-is "~0.1.3" 744 | fast-levenshtein "~2.0.4" 745 | levn "~0.3.0" 746 | prelude-ls "~1.1.2" 747 | type-check "~0.3.2" 748 | wordwrap "~1.0.0" 749 | 750 | os-homedir@^1.0.0: 751 | version "1.0.2" 752 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 753 | 754 | path-is-absolute@^1.0.0: 755 | version "1.0.1" 756 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 757 | 758 | path-is-inside@^1.0.1: 759 | version "1.0.2" 760 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 761 | 762 | path-parse@^1.0.5: 763 | version "1.0.5" 764 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 765 | 766 | pathval@^1.0.0: 767 | version "1.1.0" 768 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 769 | 770 | pify@^2.0.0: 771 | version "2.3.0" 772 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 773 | 774 | pinkie-promise@^2.0.0: 775 | version "2.0.1" 776 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 777 | dependencies: 778 | pinkie "^2.0.0" 779 | 780 | pinkie@^2.0.0: 781 | version "2.0.4" 782 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 783 | 784 | pluralize@^1.2.1: 785 | version "1.2.1" 786 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" 787 | 788 | prelude-ls@~1.1.2: 789 | version "1.1.2" 790 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 791 | 792 | private@~0.1.5: 793 | version "0.1.7" 794 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" 795 | 796 | process-nextick-args@~1.0.6: 797 | version "1.0.7" 798 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 799 | 800 | progress@^1.1.8: 801 | version "1.1.8" 802 | resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" 803 | 804 | readable-stream@^2.2.2: 805 | version "2.2.11" 806 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.11.tgz#0796b31f8d7688007ff0b93a8088d34aa17c0f72" 807 | dependencies: 808 | core-util-is "~1.0.0" 809 | inherits "~2.0.1" 810 | isarray "~1.0.0" 811 | process-nextick-args "~1.0.6" 812 | safe-buffer "~5.0.1" 813 | string_decoder "~1.0.0" 814 | util-deprecate "~1.0.1" 815 | 816 | readline2@^1.0.1: 817 | version "1.0.1" 818 | resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" 819 | dependencies: 820 | code-point-at "^1.0.0" 821 | is-fullwidth-code-point "^1.0.0" 822 | mute-stream "0.0.5" 823 | 824 | recast@^0.12.5: 825 | version "0.12.5" 826 | resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.5.tgz#1f21a04f0ffd8dea35c222492ffcfe3201c1e977" 827 | dependencies: 828 | ast-types "0.9.11" 829 | core-js "^2.4.1" 830 | esprima "~3.1.0" 831 | private "~0.1.5" 832 | source-map "~0.5.0" 833 | 834 | rechoir@^0.6.2: 835 | version "0.6.2" 836 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 837 | dependencies: 838 | resolve "^1.1.6" 839 | 840 | repl.history@^0.1.4: 841 | version "0.1.4" 842 | resolved "https://registry.yarnpkg.com/repl.history/-/repl.history-0.1.4.tgz#80367171f3781d6e4299c71758c253097f5d5832" 843 | 844 | replaceall@^0.1.6: 845 | version "0.1.6" 846 | resolved "https://registry.yarnpkg.com/replaceall/-/replaceall-0.1.6.tgz#81d81ac7aeb72d7f5c4942adf2697a3220688d8e" 847 | 848 | require-uncached@^1.0.2: 849 | version "1.0.3" 850 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 851 | dependencies: 852 | caller-path "^0.1.0" 853 | resolve-from "^1.0.0" 854 | 855 | resolve-from@^1.0.0: 856 | version "1.0.1" 857 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 858 | 859 | resolve@^1.1.6: 860 | version "1.3.3" 861 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" 862 | dependencies: 863 | path-parse "^1.0.5" 864 | 865 | restore-cursor@^1.0.1: 866 | version "1.0.1" 867 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 868 | dependencies: 869 | exit-hook "^1.0.0" 870 | onetime "^1.0.0" 871 | 872 | rimraf@^2.2.8: 873 | version "2.6.1" 874 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 875 | dependencies: 876 | glob "^7.0.5" 877 | 878 | run-async@^0.1.0: 879 | version "0.1.0" 880 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" 881 | dependencies: 882 | once "^1.3.0" 883 | 884 | rx-lite@^3.1.2: 885 | version "3.1.2" 886 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" 887 | 888 | safe-buffer@~5.0.1: 889 | version "5.0.1" 890 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" 891 | 892 | shelljs@^0.7.5: 893 | version "0.7.8" 894 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" 895 | dependencies: 896 | glob "^7.0.0" 897 | interpret "^1.0.0" 898 | rechoir "^0.6.2" 899 | 900 | slice-ansi@0.0.4: 901 | version "0.0.4" 902 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 903 | 904 | source-map@~0.5.0: 905 | version "0.5.6" 906 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 907 | 908 | sprintf-js@~1.0.2: 909 | version "1.0.3" 910 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 911 | 912 | string-width@^1.0.1: 913 | version "1.0.2" 914 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 915 | dependencies: 916 | code-point-at "^1.0.0" 917 | is-fullwidth-code-point "^1.0.0" 918 | strip-ansi "^3.0.0" 919 | 920 | string-width@^2.0.0: 921 | version "2.0.0" 922 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" 923 | dependencies: 924 | is-fullwidth-code-point "^2.0.0" 925 | strip-ansi "^3.0.0" 926 | 927 | string_decoder@~1.0.0: 928 | version "1.0.2" 929 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.2.tgz#b29e1f4e1125fa97a10382b8a533737b7491e179" 930 | dependencies: 931 | safe-buffer "~5.0.1" 932 | 933 | strip-ansi@^3.0.0: 934 | version "3.0.1" 935 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 936 | dependencies: 937 | ansi-regex "^2.0.0" 938 | 939 | strip-bom@^3.0.0: 940 | version "3.0.0" 941 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 942 | 943 | strip-json-comments@~2.0.1: 944 | version "2.0.1" 945 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 946 | 947 | supports-color@3.1.2: 948 | version "3.1.2" 949 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" 950 | dependencies: 951 | has-flag "^1.0.0" 952 | 953 | supports-color@^2.0.0: 954 | version "2.0.0" 955 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 956 | 957 | table@^3.7.8: 958 | version "3.8.3" 959 | resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" 960 | dependencies: 961 | ajv "^4.7.0" 962 | ajv-keywords "^1.0.0" 963 | chalk "^1.1.1" 964 | lodash "^4.0.0" 965 | slice-ansi "0.0.4" 966 | string-width "^2.0.0" 967 | 968 | text-table@~0.2.0: 969 | version "0.2.0" 970 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 971 | 972 | through@^2.3.6: 973 | version "2.3.8" 974 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 975 | 976 | tryit@^1.0.1: 977 | version "1.0.3" 978 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 979 | 980 | type-check@~0.3.2: 981 | version "0.3.2" 982 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 983 | dependencies: 984 | prelude-ls "~1.1.2" 985 | 986 | type-detect@^3.0.0: 987 | version "3.0.0" 988 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-3.0.0.tgz#46d0cc8553abb7b13a352b0d6dea2fd58f2d9b55" 989 | 990 | type-detect@^4.0.0: 991 | version "4.0.3" 992 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" 993 | 994 | typedarray@^0.0.6: 995 | version "0.0.6" 996 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 997 | 998 | user-home@^2.0.0: 999 | version "2.0.0" 1000 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" 1001 | dependencies: 1002 | os-homedir "^1.0.0" 1003 | 1004 | util-deprecate@~1.0.1: 1005 | version "1.0.2" 1006 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1007 | 1008 | wordwrap@~1.0.0: 1009 | version "1.0.0" 1010 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1011 | 1012 | wrappy@1: 1013 | version "1.0.2" 1014 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1015 | 1016 | write@^0.2.1: 1017 | version "0.2.1" 1018 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 1019 | dependencies: 1020 | mkdirp "^0.5.1" 1021 | 1022 | xtend@^4.0.0: 1023 | version "4.0.1" 1024 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1025 | 1026 | yargs@~1.2.6: 1027 | version "1.2.6" 1028 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" 1029 | dependencies: 1030 | minimist "^0.1.0" 1031 | --------------------------------------------------------------------------------