Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAudrey Eschright <audrey@npmjs.com>2019-01-08 03:40:51 +0300
committerAudrey Eschright <audrey@npmjs.com>2019-01-08 03:40:51 +0300
commitf350e714f66a77f71a7ebe17daeea2ea98179a1a (patch)
tree97fb157ed64d812346b989c551d1ee9f082f9f5c /node_modules
parentf63a0d6cf0b7db3dcc80e72e1383c3df723c8119 (diff)
aproba@2.0.0
Diffstat (limited to 'node_modules')
-rw-r--r--node_modules/aproba/CHANGELOG.md4
-rw-r--r--node_modules/aproba/index.js66
-rw-r--r--node_modules/aproba/package.json44
-rw-r--r--node_modules/copy-concurrently/node_modules/aproba/LICENSE14
-rw-r--r--node_modules/copy-concurrently/node_modules/aproba/README.md94
-rw-r--r--node_modules/copy-concurrently/node_modules/aproba/index.js105
-rw-r--r--node_modules/copy-concurrently/node_modules/aproba/package.json62
-rw-r--r--node_modules/gauge/node_modules/aproba/LICENSE14
-rw-r--r--node_modules/gauge/node_modules/aproba/README.md94
-rw-r--r--node_modules/gauge/node_modules/aproba/index.js105
-rw-r--r--node_modules/gauge/node_modules/aproba/package.json62
-rw-r--r--node_modules/gentle-fs/node_modules/aproba/LICENSE14
-rw-r--r--node_modules/gentle-fs/node_modules/aproba/README.md94
-rw-r--r--node_modules/gentle-fs/node_modules/aproba/index.js105
-rw-r--r--node_modules/gentle-fs/node_modules/aproba/package.json62
-rw-r--r--node_modules/move-concurrently/node_modules/aproba/LICENSE14
-rw-r--r--node_modules/move-concurrently/node_modules/aproba/README.md94
-rw-r--r--node_modules/move-concurrently/node_modules/aproba/index.js105
-rw-r--r--node_modules/move-concurrently/node_modules/aproba/package.json62
-rw-r--r--node_modules/run-queue/node_modules/aproba/LICENSE14
-rw-r--r--node_modules/run-queue/node_modules/aproba/README.md94
-rw-r--r--node_modules/run-queue/node_modules/aproba/index.js105
-rw-r--r--node_modules/run-queue/node_modules/aproba/package.json62
23 files changed, 1431 insertions, 58 deletions
diff --git a/node_modules/aproba/CHANGELOG.md b/node_modules/aproba/CHANGELOG.md
new file mode 100644
index 000000000..bab30ecb7
--- /dev/null
+++ b/node_modules/aproba/CHANGELOG.md
@@ -0,0 +1,4 @@
+2.0.0
+ * Drop support for 0.10 and 0.12. They haven't been in travis but still,
+ since we _know_ we'll break with them now it's only polite to do a
+ major bump.
diff --git a/node_modules/aproba/index.js b/node_modules/aproba/index.js
index 6f3f797c0..fd947481b 100644
--- a/node_modules/aproba/index.js
+++ b/node_modules/aproba/index.js
@@ -1,38 +1,39 @@
'use strict'
+module.exports = validate
function isArguments (thingy) {
return thingy != null && typeof thingy === 'object' && thingy.hasOwnProperty('callee')
}
-var types = {
- '*': {label: 'any', check: function () { return true }},
- A: {label: 'array', check: function (thingy) { return Array.isArray(thingy) || isArguments(thingy) }},
- S: {label: 'string', check: function (thingy) { return typeof thingy === 'string' }},
- N: {label: 'number', check: function (thingy) { return typeof thingy === 'number' }},
- F: {label: 'function', check: function (thingy) { return typeof thingy === 'function' }},
- O: {label: 'object', check: function (thingy) { return typeof thingy === 'object' && thingy != null && !types.A.check(thingy) && !types.E.check(thingy) }},
- B: {label: 'boolean', check: function (thingy) { return typeof thingy === 'boolean' }},
- E: {label: 'error', check: function (thingy) { return thingy instanceof Error }},
- Z: {label: 'null', check: function (thingy) { return thingy == null }}
+const types = {
+ '*': {label: 'any', check: () => true},
+ A: {label: 'array', check: _ => Array.isArray(_) || isArguments(_)},
+ S: {label: 'string', check: _ => typeof _ === 'string'},
+ N: {label: 'number', check: _ => typeof _ === 'number'},
+ F: {label: 'function', check: _ => typeof _ === 'function'},
+ O: {label: 'object', check: _ => typeof _ === 'object' && _ != null && !types.A.check(_) && !types.E.check(_)},
+ B: {label: 'boolean', check: _ => typeof _ === 'boolean'},
+ E: {label: 'error', check: _ => _ instanceof Error},
+ Z: {label: 'null', check: _ => _ == null}
}
function addSchema (schema, arity) {
- var group = arity[schema.length] = arity[schema.length] || []
+ const group = arity[schema.length] = arity[schema.length] || []
if (group.indexOf(schema) === -1) group.push(schema)
}
-var validate = module.exports = function (rawSchemas, args) {
+function validate (rawSchemas, args) {
if (arguments.length !== 2) throw wrongNumberOfArgs(['SA'], arguments.length)
if (!rawSchemas) throw missingRequiredArg(0, 'rawSchemas')
if (!args) throw missingRequiredArg(1, 'args')
if (!types.S.check(rawSchemas)) throw invalidType(0, ['string'], rawSchemas)
if (!types.A.check(args)) throw invalidType(1, ['array'], args)
- var schemas = rawSchemas.split('|')
- var arity = {}
+ const schemas = rawSchemas.split('|')
+ const arity = {}
- schemas.forEach(function (schema) {
- for (var ii = 0; ii < schema.length; ++ii) {
- var type = schema[ii]
+ schemas.forEach(schema => {
+ for (let ii = 0; ii < schema.length; ++ii) {
+ const type = schema[ii]
if (!types[type]) throw unknownType(ii, type)
}
if (/E.*E/.test(schema)) throw moreThanOneError(schema)
@@ -43,20 +44,18 @@ var validate = module.exports = function (rawSchemas, args) {
if (schema.length === 1) addSchema('', arity)
}
})
- var matching = arity[args.length]
+ let matching = arity[args.length]
if (!matching) {
throw wrongNumberOfArgs(Object.keys(arity), args.length)
}
- for (var ii = 0; ii < args.length; ++ii) {
- var newMatching = matching.filter(function (schema) {
- var type = schema[ii]
- var typeCheck = types[type].check
+ for (let ii = 0; ii < args.length; ++ii) {
+ let newMatching = matching.filter(schema => {
+ const type = schema[ii]
+ const typeCheck = types[type].check
return typeCheck(args[ii])
})
if (!newMatching.length) {
- var labels = matching.map(function (schema) {
- return types[schema[ii]].label
- }).filter(function (schema) { return schema != null })
+ const labels = matching.map(_ => types[_[ii]].label).filter(_ => _ != null)
throw invalidType(ii, labels, args[ii])
}
matching = newMatching
@@ -72,8 +71,8 @@ function unknownType (num, type) {
}
function invalidType (num, expectedTypes, value) {
- var valueType
- Object.keys(types).forEach(function (typeCode) {
+ let valueType
+ Object.keys(types).forEach(typeCode => {
if (types[typeCode].check(value)) valueType = types[typeCode].label
})
return newException('EINVALIDTYPE', 'Argument #' + (num + 1) + ': Expected ' +
@@ -85,8 +84,8 @@ function englishList (list) {
}
function wrongNumberOfArgs (expected, got) {
- var english = englishList(expected)
- var args = expected.every(function (ex) { return ex.length === 1 })
+ const english = englishList(expected)
+ const args = expected.every(ex => ex.length === 1)
? 'argument'
: 'arguments'
return newException('EWRONGARGCOUNT', 'Expected ' + english + ' ' + args + ' but got ' + got)
@@ -98,8 +97,9 @@ function moreThanOneError (schema) {
}
function newException (code, msg) {
- var e = new Error(msg)
- e.code = code
- if (Error.captureStackTrace) Error.captureStackTrace(e, validate)
- return e
+ const err = new Error(msg)
+ err.code = code
+ /* istanbul ignore else */
+ if (Error.captureStackTrace) Error.captureStackTrace(err, validate)
+ return err
}
diff --git a/node_modules/aproba/package.json b/node_modules/aproba/package.json
index 534c6beb5..42a7798b0 100644
--- a/node_modules/aproba/package.json
+++ b/node_modules/aproba/package.json
@@ -1,38 +1,29 @@
{
- "_args": [
- [
- "aproba@1.2.0",
- "/Users/rebecca/code/npm"
- ]
- ],
- "_from": "aproba@1.2.0",
- "_id": "aproba@1.2.0",
+ "_from": "aproba@2.0.0",
+ "_id": "aproba@2.0.0",
"_inBundle": false,
- "_integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "_integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
"_location": "/aproba",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
- "raw": "aproba@1.2.0",
+ "raw": "aproba@2.0.0",
"name": "aproba",
"escapedName": "aproba",
- "rawSpec": "1.2.0",
+ "rawSpec": "2.0.0",
"saveSpec": null,
- "fetchSpec": "1.2.0"
+ "fetchSpec": "2.0.0"
},
"_requiredBy": [
+ "#USER",
"/",
- "/copy-concurrently",
- "/gauge",
- "/gentle-fs",
- "/move-concurrently",
- "/npm-profile",
- "/run-queue"
+ "/npm-profile"
],
- "_resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "_spec": "1.2.0",
- "_where": "/Users/rebecca/code/npm",
+ "_resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+ "_shasum": "52520b8ae5b569215b354efc0caa3fe1e45a8adc",
+ "_spec": "aproba@2.0.0",
+ "_where": "/Users/aeschright/code/cli",
"author": {
"name": "Rebecca Turner",
"email": "me@re-becca.org"
@@ -40,11 +31,13 @@
"bugs": {
"url": "https://github.com/iarna/aproba/issues"
},
+ "bundleDependencies": false,
"dependencies": {},
+ "deprecated": false,
"description": "A ridiculously light-weight argument validator (now browser friendly)",
"devDependencies": {
- "standard": "^10.0.3",
- "tap": "^10.0.2"
+ "standard": "^11.0.1",
+ "tap": "^12.0.1"
},
"directories": {
"test": "test"
@@ -65,7 +58,8 @@
"url": "git+https://github.com/iarna/aproba.git"
},
"scripts": {
- "test": "standard && tap -j3 test/*.js"
+ "pretest": "standard",
+ "test": "tap --100 -J test/*.js"
},
- "version": "1.2.0"
+ "version": "2.0.0"
}
diff --git a/node_modules/copy-concurrently/node_modules/aproba/LICENSE b/node_modules/copy-concurrently/node_modules/aproba/LICENSE
new file mode 100644
index 000000000..f4be44d88
--- /dev/null
+++ b/node_modules/copy-concurrently/node_modules/aproba/LICENSE
@@ -0,0 +1,14 @@
+Copyright (c) 2015, Rebecca Turner <me@re-becca.org>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
diff --git a/node_modules/copy-concurrently/node_modules/aproba/README.md b/node_modules/copy-concurrently/node_modules/aproba/README.md
new file mode 100644
index 000000000..0bfc594c5
--- /dev/null
+++ b/node_modules/copy-concurrently/node_modules/aproba/README.md
@@ -0,0 +1,94 @@
+aproba
+======
+
+A ridiculously light-weight function argument validator
+
+```
+var validate = require("aproba")
+
+function myfunc(a, b, c) {
+ // `a` must be a string, `b` a number, `c` a function
+ validate('SNF', arguments) // [a,b,c] is also valid
+}
+
+myfunc('test', 23, function () {}) // ok
+myfunc(123, 23, function () {}) // type error
+myfunc('test', 23) // missing arg error
+myfunc('test', 23, function () {}, true) // too many args error
+
+```
+
+Valid types are:
+
+| type | description
+| :--: | :----------
+| * | matches any type
+| A | `Array.isArray` OR an `arguments` object
+| S | typeof == string
+| N | typeof == number
+| F | typeof == function
+| O | typeof == object and not type A and not type E
+| B | typeof == boolean
+| E | `instanceof Error` OR `null` **(special: see below)**
+| Z | == `null`
+
+Validation failures throw one of three exception types, distinguished by a
+`code` property of `EMISSINGARG`, `EINVALIDTYPE` or `ETOOMANYARGS`.
+
+If you pass in an invalid type then it will throw with a code of
+`EUNKNOWNTYPE`.
+
+If an **error** argument is found and is not null then the remaining
+arguments are optional. That is, if you say `ESO` then that's like using a
+non-magical `E` in: `E|ESO|ZSO`.
+
+### But I have optional arguments?!
+
+You can provide more than one signature by separating them with pipes `|`.
+If any signature matches the arguments then they'll be considered valid.
+
+So for example, say you wanted to write a signature for
+`fs.createWriteStream`. The docs for it describe it thusly:
+
+```
+fs.createWriteStream(path[, options])
+```
+
+This would be a signature of `SO|S`. That is, a string and and object, or
+just a string.
+
+Now, if you read the full `fs` docs, you'll see that actually path can ALSO
+be a buffer. And options can be a string, that is:
+```
+path <String> | <Buffer>
+options <String> | <Object>
+```
+
+To reproduce this you have to fully enumerate all of the possible
+combinations and that implies a signature of `SO|SS|OO|OS|S|O`. The
+awkwardness is a feature: It reminds you of the complexity you're adding to
+your API when you do this sort of thing.
+
+
+### Browser support
+
+This has no dependencies and should work in browsers, though you'll have
+noisier stack traces.
+
+### Why this exists
+
+I wanted a very simple argument validator. It needed to do two things:
+
+1. Be more concise and easier to use than assertions
+
+2. Not encourage an infinite bikeshed of DSLs
+
+This is why types are specified by a single character and there's no such
+thing as an optional argument.
+
+This is not intended to validate user data. This is specifically about
+asserting the interface of your functions.
+
+If you need greater validation, I encourage you to write them by hand or
+look elsewhere.
+
diff --git a/node_modules/copy-concurrently/node_modules/aproba/index.js b/node_modules/copy-concurrently/node_modules/aproba/index.js
new file mode 100644
index 000000000..6f3f797c0
--- /dev/null
+++ b/node_modules/copy-concurrently/node_modules/aproba/index.js
@@ -0,0 +1,105 @@
+'use strict'
+
+function isArguments (thingy) {
+ return thingy != null && typeof thingy === 'object' && thingy.hasOwnProperty('callee')
+}
+
+var types = {
+ '*': {label: 'any', check: function () { return true }},
+ A: {label: 'array', check: function (thingy) { return Array.isArray(thingy) || isArguments(thingy) }},
+ S: {label: 'string', check: function (thingy) { return typeof thingy === 'string' }},
+ N: {label: 'number', check: function (thingy) { return typeof thingy === 'number' }},
+ F: {label: 'function', check: function (thingy) { return typeof thingy === 'function' }},
+ O: {label: 'object', check: function (thingy) { return typeof thingy === 'object' && thingy != null && !types.A.check(thingy) && !types.E.check(thingy) }},
+ B: {label: 'boolean', check: function (thingy) { return typeof thingy === 'boolean' }},
+ E: {label: 'error', check: function (thingy) { return thingy instanceof Error }},
+ Z: {label: 'null', check: function (thingy) { return thingy == null }}
+}
+
+function addSchema (schema, arity) {
+ var group = arity[schema.length] = arity[schema.length] || []
+ if (group.indexOf(schema) === -1) group.push(schema)
+}
+
+var validate = module.exports = function (rawSchemas, args) {
+ if (arguments.length !== 2) throw wrongNumberOfArgs(['SA'], arguments.length)
+ if (!rawSchemas) throw missingRequiredArg(0, 'rawSchemas')
+ if (!args) throw missingRequiredArg(1, 'args')
+ if (!types.S.check(rawSchemas)) throw invalidType(0, ['string'], rawSchemas)
+ if (!types.A.check(args)) throw invalidType(1, ['array'], args)
+ var schemas = rawSchemas.split('|')
+ var arity = {}
+
+ schemas.forEach(function (schema) {
+ for (var ii = 0; ii < schema.length; ++ii) {
+ var type = schema[ii]
+ if (!types[type]) throw unknownType(ii, type)
+ }
+ if (/E.*E/.test(schema)) throw moreThanOneError(schema)
+ addSchema(schema, arity)
+ if (/E/.test(schema)) {
+ addSchema(schema.replace(/E.*$/, 'E'), arity)
+ addSchema(schema.replace(/E/, 'Z'), arity)
+ if (schema.length === 1) addSchema('', arity)
+ }
+ })
+ var matching = arity[args.length]
+ if (!matching) {
+ throw wrongNumberOfArgs(Object.keys(arity), args.length)
+ }
+ for (var ii = 0; ii < args.length; ++ii) {
+ var newMatching = matching.filter(function (schema) {
+ var type = schema[ii]
+ var typeCheck = types[type].check
+ return typeCheck(args[ii])
+ })
+ if (!newMatching.length) {
+ var labels = matching.map(function (schema) {
+ return types[schema[ii]].label
+ }).filter(function (schema) { return schema != null })
+ throw invalidType(ii, labels, args[ii])
+ }
+ matching = newMatching
+ }
+}
+
+function missingRequiredArg (num) {
+ return newException('EMISSINGARG', 'Missing required argument #' + (num + 1))
+}
+
+function unknownType (num, type) {
+ return newException('EUNKNOWNTYPE', 'Unknown type ' + type + ' in argument #' + (num + 1))
+}
+
+function invalidType (num, expectedTypes, value) {
+ var valueType
+ Object.keys(types).forEach(function (typeCode) {
+ if (types[typeCode].check(value)) valueType = types[typeCode].label
+ })
+ return newException('EINVALIDTYPE', 'Argument #' + (num + 1) + ': Expected ' +
+ englishList(expectedTypes) + ' but got ' + valueType)
+}
+
+function englishList (list) {
+ return list.join(', ').replace(/, ([^,]+)$/, ' or $1')
+}
+
+function wrongNumberOfArgs (expected, got) {
+ var english = englishList(expected)
+ var args = expected.every(function (ex) { return ex.length === 1 })
+ ? 'argument'
+ : 'arguments'
+ return newException('EWRONGARGCOUNT', 'Expected ' + english + ' ' + args + ' but got ' + got)
+}
+
+function moreThanOneError (schema) {
+ return newException('ETOOMANYERRORTYPES',
+ 'Only one error type per argument signature is allowed, more than one found in "' + schema + '"')
+}
+
+function newException (code, msg) {
+ var e = new Error(msg)
+ e.code = code
+ if (Error.captureStackTrace) Error.captureStackTrace(e, validate)
+ return e
+}
diff --git a/node_modules/copy-concurrently/node_modules/aproba/package.json b/node_modules/copy-concurrently/node_modules/aproba/package.json
new file mode 100644
index 000000000..e16eea157
--- /dev/null
+++ b/node_modules/copy-concurrently/node_modules/aproba/package.json
@@ -0,0 +1,62 @@
+{
+ "_from": "aproba@^1.1.1",
+ "_id": "aproba@1.2.0",
+ "_inBundle": false,
+ "_integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "_location": "/copy-concurrently/aproba",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "aproba@^1.1.1",
+ "name": "aproba",
+ "escapedName": "aproba",
+ "rawSpec": "^1.1.1",
+ "saveSpec": null,
+ "fetchSpec": "^1.1.1"
+ },
+ "_requiredBy": [
+ "/copy-concurrently"
+ ],
+ "_resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "_shasum": "6802e6264efd18c790a1b0d517f0f2627bf2c94a",
+ "_spec": "aproba@^1.1.1",
+ "_where": "/Users/aeschright/code/cli/node_modules/copy-concurrently",
+ "author": {
+ "name": "Rebecca Turner",
+ "email": "me@re-becca.org"
+ },
+ "bugs": {
+ "url": "https://github.com/iarna/aproba/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "A ridiculously light-weight argument validator (now browser friendly)",
+ "devDependencies": {
+ "standard": "^10.0.3",
+ "tap": "^10.0.2"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/iarna/aproba",
+ "keywords": [
+ "argument",
+ "validate"
+ ],
+ "license": "ISC",
+ "main": "index.js",
+ "name": "aproba",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/iarna/aproba.git"
+ },
+ "scripts": {
+ "test": "standard && tap -j3 test/*.js"
+ },
+ "version": "1.2.0"
+}
diff --git a/node_modules/gauge/node_modules/aproba/LICENSE b/node_modules/gauge/node_modules/aproba/LICENSE
new file mode 100644
index 000000000..f4be44d88
--- /dev/null
+++ b/node_modules/gauge/node_modules/aproba/LICENSE
@@ -0,0 +1,14 @@
+Copyright (c) 2015, Rebecca Turner <me@re-becca.org>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
diff --git a/node_modules/gauge/node_modules/aproba/README.md b/node_modules/gauge/node_modules/aproba/README.md
new file mode 100644
index 000000000..0bfc594c5
--- /dev/null
+++ b/node_modules/gauge/node_modules/aproba/README.md
@@ -0,0 +1,94 @@
+aproba
+======
+
+A ridiculously light-weight function argument validator
+
+```
+var validate = require("aproba")
+
+function myfunc(a, b, c) {
+ // `a` must be a string, `b` a number, `c` a function
+ validate('SNF', arguments) // [a,b,c] is also valid
+}
+
+myfunc('test', 23, function () {}) // ok
+myfunc(123, 23, function () {}) // type error
+myfunc('test', 23) // missing arg error
+myfunc('test', 23, function () {}, true) // too many args error
+
+```
+
+Valid types are:
+
+| type | description
+| :--: | :----------
+| * | matches any type
+| A | `Array.isArray` OR an `arguments` object
+| S | typeof == string
+| N | typeof == number
+| F | typeof == function
+| O | typeof == object and not type A and not type E
+| B | typeof == boolean
+| E | `instanceof Error` OR `null` **(special: see below)**
+| Z | == `null`
+
+Validation failures throw one of three exception types, distinguished by a
+`code` property of `EMISSINGARG`, `EINVALIDTYPE` or `ETOOMANYARGS`.
+
+If you pass in an invalid type then it will throw with a code of
+`EUNKNOWNTYPE`.
+
+If an **error** argument is found and is not null then the remaining
+arguments are optional. That is, if you say `ESO` then that's like using a
+non-magical `E` in: `E|ESO|ZSO`.
+
+### But I have optional arguments?!
+
+You can provide more than one signature by separating them with pipes `|`.
+If any signature matches the arguments then they'll be considered valid.
+
+So for example, say you wanted to write a signature for
+`fs.createWriteStream`. The docs for it describe it thusly:
+
+```
+fs.createWriteStream(path[, options])
+```
+
+This would be a signature of `SO|S`. That is, a string and and object, or
+just a string.
+
+Now, if you read the full `fs` docs, you'll see that actually path can ALSO
+be a buffer. And options can be a string, that is:
+```
+path <String> | <Buffer>
+options <String> | <Object>
+```
+
+To reproduce this you have to fully enumerate all of the possible
+combinations and that implies a signature of `SO|SS|OO|OS|S|O`. The
+awkwardness is a feature: It reminds you of the complexity you're adding to
+your API when you do this sort of thing.
+
+
+### Browser support
+
+This has no dependencies and should work in browsers, though you'll have
+noisier stack traces.
+
+### Why this exists
+
+I wanted a very simple argument validator. It needed to do two things:
+
+1. Be more concise and easier to use than assertions
+
+2. Not encourage an infinite bikeshed of DSLs
+
+This is why types are specified by a single character and there's no such
+thing as an optional argument.
+
+This is not intended to validate user data. This is specifically about
+asserting the interface of your functions.
+
+If you need greater validation, I encourage you to write them by hand or
+look elsewhere.
+
diff --git a/node_modules/gauge/node_modules/aproba/index.js b/node_modules/gauge/node_modules/aproba/index.js
new file mode 100644
index 000000000..6f3f797c0
--- /dev/null
+++ b/node_modules/gauge/node_modules/aproba/index.js
@@ -0,0 +1,105 @@
+'use strict'
+
+function isArguments (thingy) {
+ return thingy != null && typeof thingy === 'object' && thingy.hasOwnProperty('callee')
+}
+
+var types = {
+ '*': {label: 'any', check: function () { return true }},
+ A: {label: 'array', check: function (thingy) { return Array.isArray(thingy) || isArguments(thingy) }},
+ S: {label: 'string', check: function (thingy) { return typeof thingy === 'string' }},
+ N: {label: 'number', check: function (thingy) { return typeof thingy === 'number' }},
+ F: {label: 'function', check: function (thingy) { return typeof thingy === 'function' }},
+ O: {label: 'object', check: function (thingy) { return typeof thingy === 'object' && thingy != null && !types.A.check(thingy) && !types.E.check(thingy) }},
+ B: {label: 'boolean', check: function (thingy) { return typeof thingy === 'boolean' }},
+ E: {label: 'error', check: function (thingy) { return thingy instanceof Error }},
+ Z: {label: 'null', check: function (thingy) { return thingy == null }}
+}
+
+function addSchema (schema, arity) {
+ var group = arity[schema.length] = arity[schema.length] || []
+ if (group.indexOf(schema) === -1) group.push(schema)
+}
+
+var validate = module.exports = function (rawSchemas, args) {
+ if (arguments.length !== 2) throw wrongNumberOfArgs(['SA'], arguments.length)
+ if (!rawSchemas) throw missingRequiredArg(0, 'rawSchemas')
+ if (!args) throw missingRequiredArg(1, 'args')
+ if (!types.S.check(rawSchemas)) throw invalidType(0, ['string'], rawSchemas)
+ if (!types.A.check(args)) throw invalidType(1, ['array'], args)
+ var schemas = rawSchemas.split('|')
+ var arity = {}
+
+ schemas.forEach(function (schema) {
+ for (var ii = 0; ii < schema.length; ++ii) {
+ var type = schema[ii]
+ if (!types[type]) throw unknownType(ii, type)
+ }
+ if (/E.*E/.test(schema)) throw moreThanOneError(schema)
+ addSchema(schema, arity)
+ if (/E/.test(schema)) {
+ addSchema(schema.replace(/E.*$/, 'E'), arity)
+ addSchema(schema.replace(/E/, 'Z'), arity)
+ if (schema.length === 1) addSchema('', arity)
+ }
+ })
+ var matching = arity[args.length]
+ if (!matching) {
+ throw wrongNumberOfArgs(Object.keys(arity), args.length)
+ }
+ for (var ii = 0; ii < args.length; ++ii) {
+ var newMatching = matching.filter(function (schema) {
+ var type = schema[ii]
+ var typeCheck = types[type].check
+ return typeCheck(args[ii])
+ })
+ if (!newMatching.length) {
+ var labels = matching.map(function (schema) {
+ return types[schema[ii]].label
+ }).filter(function (schema) { return schema != null })
+ throw invalidType(ii, labels, args[ii])
+ }
+ matching = newMatching
+ }
+}
+
+function missingRequiredArg (num) {
+ return newException('EMISSINGARG', 'Missing required argument #' + (num + 1))
+}
+
+function unknownType (num, type) {
+ return newException('EUNKNOWNTYPE', 'Unknown type ' + type + ' in argument #' + (num + 1))
+}
+
+function invalidType (num, expectedTypes, value) {
+ var valueType
+ Object.keys(types).forEach(function (typeCode) {
+ if (types[typeCode].check(value)) valueType = types[typeCode].label
+ })
+ return newException('EINVALIDTYPE', 'Argument #' + (num + 1) + ': Expected ' +
+ englishList(expectedTypes) + ' but got ' + valueType)
+}
+
+function englishList (list) {
+ return list.join(', ').replace(/, ([^,]+)$/, ' or $1')
+}
+
+function wrongNumberOfArgs (expected, got) {
+ var english = englishList(expected)
+ var args = expected.every(function (ex) { return ex.length === 1 })
+ ? 'argument'
+ : 'arguments'
+ return newException('EWRONGARGCOUNT', 'Expected ' + english + ' ' + args + ' but got ' + got)
+}
+
+function moreThanOneError (schema) {
+ return newException('ETOOMANYERRORTYPES',
+ 'Only one error type per argument signature is allowed, more than one found in "' + schema + '"')
+}
+
+function newException (code, msg) {
+ var e = new Error(msg)
+ e.code = code
+ if (Error.captureStackTrace) Error.captureStackTrace(e, validate)
+ return e
+}
diff --git a/node_modules/gauge/node_modules/aproba/package.json b/node_modules/gauge/node_modules/aproba/package.json
new file mode 100644
index 000000000..f654576f8
--- /dev/null
+++ b/node_modules/gauge/node_modules/aproba/package.json
@@ -0,0 +1,62 @@
+{
+ "_from": "aproba@^1.0.3",
+ "_id": "aproba@1.2.0",
+ "_inBundle": false,
+ "_integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "_location": "/gauge/aproba",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "aproba@^1.0.3",
+ "name": "aproba",
+ "escapedName": "aproba",
+ "rawSpec": "^1.0.3",
+ "saveSpec": null,
+ "fetchSpec": "^1.0.3"
+ },
+ "_requiredBy": [
+ "/gauge"
+ ],
+ "_resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "_shasum": "6802e6264efd18c790a1b0d517f0f2627bf2c94a",
+ "_spec": "aproba@^1.0.3",
+ "_where": "/Users/aeschright/code/cli/node_modules/gauge",
+ "author": {
+ "name": "Rebecca Turner",
+ "email": "me@re-becca.org"
+ },
+ "bugs": {
+ "url": "https://github.com/iarna/aproba/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "A ridiculously light-weight argument validator (now browser friendly)",
+ "devDependencies": {
+ "standard": "^10.0.3",
+ "tap": "^10.0.2"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/iarna/aproba",
+ "keywords": [
+ "argument",
+ "validate"
+ ],
+ "license": "ISC",
+ "main": "index.js",
+ "name": "aproba",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/iarna/aproba.git"
+ },
+ "scripts": {
+ "test": "standard && tap -j3 test/*.js"
+ },
+ "version": "1.2.0"
+}
diff --git a/node_modules/gentle-fs/node_modules/aproba/LICENSE b/node_modules/gentle-fs/node_modules/aproba/LICENSE
new file mode 100644
index 000000000..f4be44d88
--- /dev/null
+++ b/node_modules/gentle-fs/node_modules/aproba/LICENSE
@@ -0,0 +1,14 @@
+Copyright (c) 2015, Rebecca Turner <me@re-becca.org>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
diff --git a/node_modules/gentle-fs/node_modules/aproba/README.md b/node_modules/gentle-fs/node_modules/aproba/README.md
new file mode 100644
index 000000000..0bfc594c5
--- /dev/null
+++ b/node_modules/gentle-fs/node_modules/aproba/README.md
@@ -0,0 +1,94 @@
+aproba
+======
+
+A ridiculously light-weight function argument validator
+
+```
+var validate = require("aproba")
+
+function myfunc(a, b, c) {
+ // `a` must be a string, `b` a number, `c` a function
+ validate('SNF', arguments) // [a,b,c] is also valid
+}
+
+myfunc('test', 23, function () {}) // ok
+myfunc(123, 23, function () {}) // type error
+myfunc('test', 23) // missing arg error
+myfunc('test', 23, function () {}, true) // too many args error
+
+```
+
+Valid types are:
+
+| type | description
+| :--: | :----------
+| * | matches any type
+| A | `Array.isArray` OR an `arguments` object
+| S | typeof == string
+| N | typeof == number
+| F | typeof == function
+| O | typeof == object and not type A and not type E
+| B | typeof == boolean
+| E | `instanceof Error` OR `null` **(special: see below)**
+| Z | == `null`
+
+Validation failures throw one of three exception types, distinguished by a
+`code` property of `EMISSINGARG`, `EINVALIDTYPE` or `ETOOMANYARGS`.
+
+If you pass in an invalid type then it will throw with a code of
+`EUNKNOWNTYPE`.
+
+If an **error** argument is found and is not null then the remaining
+arguments are optional. That is, if you say `ESO` then that's like using a
+non-magical `E` in: `E|ESO|ZSO`.
+
+### But I have optional arguments?!
+
+You can provide more than one signature by separating them with pipes `|`.
+If any signature matches the arguments then they'll be considered valid.
+
+So for example, say you wanted to write a signature for
+`fs.createWriteStream`. The docs for it describe it thusly:
+
+```
+fs.createWriteStream(path[, options])
+```
+
+This would be a signature of `SO|S`. That is, a string and and object, or
+just a string.
+
+Now, if you read the full `fs` docs, you'll see that actually path can ALSO
+be a buffer. And options can be a string, that is:
+```
+path <String> | <Buffer>
+options <String> | <Object>
+```
+
+To reproduce this you have to fully enumerate all of the possible
+combinations and that implies a signature of `SO|SS|OO|OS|S|O`. The
+awkwardness is a feature: It reminds you of the complexity you're adding to
+your API when you do this sort of thing.
+
+
+### Browser support
+
+This has no dependencies and should work in browsers, though you'll have
+noisier stack traces.
+
+### Why this exists
+
+I wanted a very simple argument validator. It needed to do two things:
+
+1. Be more concise and easier to use than assertions
+
+2. Not encourage an infinite bikeshed of DSLs
+
+This is why types are specified by a single character and there's no such
+thing as an optional argument.
+
+This is not intended to validate user data. This is specifically about
+asserting the interface of your functions.
+
+If you need greater validation, I encourage you to write them by hand or
+look elsewhere.
+
diff --git a/node_modules/gentle-fs/node_modules/aproba/index.js b/node_modules/gentle-fs/node_modules/aproba/index.js
new file mode 100644
index 000000000..6f3f797c0
--- /dev/null
+++ b/node_modules/gentle-fs/node_modules/aproba/index.js
@@ -0,0 +1,105 @@
+'use strict'
+
+function isArguments (thingy) {
+ return thingy != null && typeof thingy === 'object' && thingy.hasOwnProperty('callee')
+}
+
+var types = {
+ '*': {label: 'any', check: function () { return true }},
+ A: {label: 'array', check: function (thingy) { return Array.isArray(thingy) || isArguments(thingy) }},
+ S: {label: 'string', check: function (thingy) { return typeof thingy === 'string' }},
+ N: {label: 'number', check: function (thingy) { return typeof thingy === 'number' }},
+ F: {label: 'function', check: function (thingy) { return typeof thingy === 'function' }},
+ O: {label: 'object', check: function (thingy) { return typeof thingy === 'object' && thingy != null && !types.A.check(thingy) && !types.E.check(thingy) }},
+ B: {label: 'boolean', check: function (thingy) { return typeof thingy === 'boolean' }},
+ E: {label: 'error', check: function (thingy) { return thingy instanceof Error }},
+ Z: {label: 'null', check: function (thingy) { return thingy == null }}
+}
+
+function addSchema (schema, arity) {
+ var group = arity[schema.length] = arity[schema.length] || []
+ if (group.indexOf(schema) === -1) group.push(schema)
+}
+
+var validate = module.exports = function (rawSchemas, args) {
+ if (arguments.length !== 2) throw wrongNumberOfArgs(['SA'], arguments.length)
+ if (!rawSchemas) throw missingRequiredArg(0, 'rawSchemas')
+ if (!args) throw missingRequiredArg(1, 'args')
+ if (!types.S.check(rawSchemas)) throw invalidType(0, ['string'], rawSchemas)
+ if (!types.A.check(args)) throw invalidType(1, ['array'], args)
+ var schemas = rawSchemas.split('|')
+ var arity = {}
+
+ schemas.forEach(function (schema) {
+ for (var ii = 0; ii < schema.length; ++ii) {
+ var type = schema[ii]
+ if (!types[type]) throw unknownType(ii, type)
+ }
+ if (/E.*E/.test(schema)) throw moreThanOneError(schema)
+ addSchema(schema, arity)
+ if (/E/.test(schema)) {
+ addSchema(schema.replace(/E.*$/, 'E'), arity)
+ addSchema(schema.replace(/E/, 'Z'), arity)
+ if (schema.length === 1) addSchema('', arity)
+ }
+ })
+ var matching = arity[args.length]
+ if (!matching) {
+ throw wrongNumberOfArgs(Object.keys(arity), args.length)
+ }
+ for (var ii = 0; ii < args.length; ++ii) {
+ var newMatching = matching.filter(function (schema) {
+ var type = schema[ii]
+ var typeCheck = types[type].check
+ return typeCheck(args[ii])
+ })
+ if (!newMatching.length) {
+ var labels = matching.map(function (schema) {
+ return types[schema[ii]].label
+ }).filter(function (schema) { return schema != null })
+ throw invalidType(ii, labels, args[ii])
+ }
+ matching = newMatching
+ }
+}
+
+function missingRequiredArg (num) {
+ return newException('EMISSINGARG', 'Missing required argument #' + (num + 1))
+}
+
+function unknownType (num, type) {
+ return newException('EUNKNOWNTYPE', 'Unknown type ' + type + ' in argument #' + (num + 1))
+}
+
+function invalidType (num, expectedTypes, value) {
+ var valueType
+ Object.keys(types).forEach(function (typeCode) {
+ if (types[typeCode].check(value)) valueType = types[typeCode].label
+ })
+ return newException('EINVALIDTYPE', 'Argument #' + (num + 1) + ': Expected ' +
+ englishList(expectedTypes) + ' but got ' + valueType)
+}
+
+function englishList (list) {
+ return list.join(', ').replace(/, ([^,]+)$/, ' or $1')
+}
+
+function wrongNumberOfArgs (expected, got) {
+ var english = englishList(expected)
+ var args = expected.every(function (ex) { return ex.length === 1 })
+ ? 'argument'
+ : 'arguments'
+ return newException('EWRONGARGCOUNT', 'Expected ' + english + ' ' + args + ' but got ' + got)
+}
+
+function moreThanOneError (schema) {
+ return newException('ETOOMANYERRORTYPES',
+ 'Only one error type per argument signature is allowed, more than one found in "' + schema + '"')
+}
+
+function newException (code, msg) {
+ var e = new Error(msg)
+ e.code = code
+ if (Error.captureStackTrace) Error.captureStackTrace(e, validate)
+ return e
+}
diff --git a/node_modules/gentle-fs/node_modules/aproba/package.json b/node_modules/gentle-fs/node_modules/aproba/package.json
new file mode 100644
index 000000000..34b51a0df
--- /dev/null
+++ b/node_modules/gentle-fs/node_modules/aproba/package.json
@@ -0,0 +1,62 @@
+{
+ "_from": "aproba@^1.1.2",
+ "_id": "aproba@1.2.0",
+ "_inBundle": false,
+ "_integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "_location": "/gentle-fs/aproba",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "aproba@^1.1.2",
+ "name": "aproba",
+ "escapedName": "aproba",
+ "rawSpec": "^1.1.2",
+ "saveSpec": null,
+ "fetchSpec": "^1.1.2"
+ },
+ "_requiredBy": [
+ "/gentle-fs"
+ ],
+ "_resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "_shasum": "6802e6264efd18c790a1b0d517f0f2627bf2c94a",
+ "_spec": "aproba@^1.1.2",
+ "_where": "/Users/aeschright/code/cli/node_modules/gentle-fs",
+ "author": {
+ "name": "Rebecca Turner",
+ "email": "me@re-becca.org"
+ },
+ "bugs": {
+ "url": "https://github.com/iarna/aproba/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "A ridiculously light-weight argument validator (now browser friendly)",
+ "devDependencies": {
+ "standard": "^10.0.3",
+ "tap": "^10.0.2"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/iarna/aproba",
+ "keywords": [
+ "argument",
+ "validate"
+ ],
+ "license": "ISC",
+ "main": "index.js",
+ "name": "aproba",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/iarna/aproba.git"
+ },
+ "scripts": {
+ "test": "standard && tap -j3 test/*.js"
+ },
+ "version": "1.2.0"
+}
diff --git a/node_modules/move-concurrently/node_modules/aproba/LICENSE b/node_modules/move-concurrently/node_modules/aproba/LICENSE
new file mode 100644
index 000000000..f4be44d88
--- /dev/null
+++ b/node_modules/move-concurrently/node_modules/aproba/LICENSE
@@ -0,0 +1,14 @@
+Copyright (c) 2015, Rebecca Turner <me@re-becca.org>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
diff --git a/node_modules/move-concurrently/node_modules/aproba/README.md b/node_modules/move-concurrently/node_modules/aproba/README.md
new file mode 100644
index 000000000..0bfc594c5
--- /dev/null
+++ b/node_modules/move-concurrently/node_modules/aproba/README.md
@@ -0,0 +1,94 @@
+aproba
+======
+
+A ridiculously light-weight function argument validator
+
+```
+var validate = require("aproba")
+
+function myfunc(a, b, c) {
+ // `a` must be a string, `b` a number, `c` a function
+ validate('SNF', arguments) // [a,b,c] is also valid
+}
+
+myfunc('test', 23, function () {}) // ok
+myfunc(123, 23, function () {}) // type error
+myfunc('test', 23) // missing arg error
+myfunc('test', 23, function () {}, true) // too many args error
+
+```
+
+Valid types are:
+
+| type | description
+| :--: | :----------
+| * | matches any type
+| A | `Array.isArray` OR an `arguments` object
+| S | typeof == string
+| N | typeof == number
+| F | typeof == function
+| O | typeof == object and not type A and not type E
+| B | typeof == boolean
+| E | `instanceof Error` OR `null` **(special: see below)**
+| Z | == `null`
+
+Validation failures throw one of three exception types, distinguished by a
+`code` property of `EMISSINGARG`, `EINVALIDTYPE` or `ETOOMANYARGS`.
+
+If you pass in an invalid type then it will throw with a code of
+`EUNKNOWNTYPE`.
+
+If an **error** argument is found and is not null then the remaining
+arguments are optional. That is, if you say `ESO` then that's like using a
+non-magical `E` in: `E|ESO|ZSO`.
+
+### But I have optional arguments?!
+
+You can provide more than one signature by separating them with pipes `|`.
+If any signature matches the arguments then they'll be considered valid.
+
+So for example, say you wanted to write a signature for
+`fs.createWriteStream`. The docs for it describe it thusly:
+
+```
+fs.createWriteStream(path[, options])
+```
+
+This would be a signature of `SO|S`. That is, a string and and object, or
+just a string.
+
+Now, if you read the full `fs` docs, you'll see that actually path can ALSO
+be a buffer. And options can be a string, that is:
+```
+path <String> | <Buffer>
+options <String> | <Object>
+```
+
+To reproduce this you have to fully enumerate all of the possible
+combinations and that implies a signature of `SO|SS|OO|OS|S|O`. The
+awkwardness is a feature: It reminds you of the complexity you're adding to
+your API when you do this sort of thing.
+
+
+### Browser support
+
+This has no dependencies and should work in browsers, though you'll have
+noisier stack traces.
+
+### Why this exists
+
+I wanted a very simple argument validator. It needed to do two things:
+
+1. Be more concise and easier to use than assertions
+
+2. Not encourage an infinite bikeshed of DSLs
+
+This is why types are specified by a single character and there's no such
+thing as an optional argument.
+
+This is not intended to validate user data. This is specifically about
+asserting the interface of your functions.
+
+If you need greater validation, I encourage you to write them by hand or
+look elsewhere.
+
diff --git a/node_modules/move-concurrently/node_modules/aproba/index.js b/node_modules/move-concurrently/node_modules/aproba/index.js
new file mode 100644
index 000000000..6f3f797c0
--- /dev/null
+++ b/node_modules/move-concurrently/node_modules/aproba/index.js
@@ -0,0 +1,105 @@
+'use strict'
+
+function isArguments (thingy) {
+ return thingy != null && typeof thingy === 'object' && thingy.hasOwnProperty('callee')
+}
+
+var types = {
+ '*': {label: 'any', check: function () { return true }},
+ A: {label: 'array', check: function (thingy) { return Array.isArray(thingy) || isArguments(thingy) }},
+ S: {label: 'string', check: function (thingy) { return typeof thingy === 'string' }},
+ N: {label: 'number', check: function (thingy) { return typeof thingy === 'number' }},
+ F: {label: 'function', check: function (thingy) { return typeof thingy === 'function' }},
+ O: {label: 'object', check: function (thingy) { return typeof thingy === 'object' && thingy != null && !types.A.check(thingy) && !types.E.check(thingy) }},
+ B: {label: 'boolean', check: function (thingy) { return typeof thingy === 'boolean' }},
+ E: {label: 'error', check: function (thingy) { return thingy instanceof Error }},
+ Z: {label: 'null', check: function (thingy) { return thingy == null }}
+}
+
+function addSchema (schema, arity) {
+ var group = arity[schema.length] = arity[schema.length] || []
+ if (group.indexOf(schema) === -1) group.push(schema)
+}
+
+var validate = module.exports = function (rawSchemas, args) {
+ if (arguments.length !== 2) throw wrongNumberOfArgs(['SA'], arguments.length)
+ if (!rawSchemas) throw missingRequiredArg(0, 'rawSchemas')
+ if (!args) throw missingRequiredArg(1, 'args')
+ if (!types.S.check(rawSchemas)) throw invalidType(0, ['string'], rawSchemas)
+ if (!types.A.check(args)) throw invalidType(1, ['array'], args)
+ var schemas = rawSchemas.split('|')
+ var arity = {}
+
+ schemas.forEach(function (schema) {
+ for (var ii = 0; ii < schema.length; ++ii) {
+ var type = schema[ii]
+ if (!types[type]) throw unknownType(ii, type)
+ }
+ if (/E.*E/.test(schema)) throw moreThanOneError(schema)
+ addSchema(schema, arity)
+ if (/E/.test(schema)) {
+ addSchema(schema.replace(/E.*$/, 'E'), arity)
+ addSchema(schema.replace(/E/, 'Z'), arity)
+ if (schema.length === 1) addSchema('', arity)
+ }
+ })
+ var matching = arity[args.length]
+ if (!matching) {
+ throw wrongNumberOfArgs(Object.keys(arity), args.length)
+ }
+ for (var ii = 0; ii < args.length; ++ii) {
+ var newMatching = matching.filter(function (schema) {
+ var type = schema[ii]
+ var typeCheck = types[type].check
+ return typeCheck(args[ii])
+ })
+ if (!newMatching.length) {
+ var labels = matching.map(function (schema) {
+ return types[schema[ii]].label
+ }).filter(function (schema) { return schema != null })
+ throw invalidType(ii, labels, args[ii])
+ }
+ matching = newMatching
+ }
+}
+
+function missingRequiredArg (num) {
+ return newException('EMISSINGARG', 'Missing required argument #' + (num + 1))
+}
+
+function unknownType (num, type) {
+ return newException('EUNKNOWNTYPE', 'Unknown type ' + type + ' in argument #' + (num + 1))
+}
+
+function invalidType (num, expectedTypes, value) {
+ var valueType
+ Object.keys(types).forEach(function (typeCode) {
+ if (types[typeCode].check(value)) valueType = types[typeCode].label
+ })
+ return newException('EINVALIDTYPE', 'Argument #' + (num + 1) + ': Expected ' +
+ englishList(expectedTypes) + ' but got ' + valueType)
+}
+
+function englishList (list) {
+ return list.join(', ').replace(/, ([^,]+)$/, ' or $1')
+}
+
+function wrongNumberOfArgs (expected, got) {
+ var english = englishList(expected)
+ var args = expected.every(function (ex) { return ex.length === 1 })
+ ? 'argument'
+ : 'arguments'
+ return newException('EWRONGARGCOUNT', 'Expected ' + english + ' ' + args + ' but got ' + got)
+}
+
+function moreThanOneError (schema) {
+ return newException('ETOOMANYERRORTYPES',
+ 'Only one error type per argument signature is allowed, more than one found in "' + schema + '"')
+}
+
+function newException (code, msg) {
+ var e = new Error(msg)
+ e.code = code
+ if (Error.captureStackTrace) Error.captureStackTrace(e, validate)
+ return e
+}
diff --git a/node_modules/move-concurrently/node_modules/aproba/package.json b/node_modules/move-concurrently/node_modules/aproba/package.json
new file mode 100644
index 000000000..eba0d3e6e
--- /dev/null
+++ b/node_modules/move-concurrently/node_modules/aproba/package.json
@@ -0,0 +1,62 @@
+{
+ "_from": "aproba@^1.1.1",
+ "_id": "aproba@1.2.0",
+ "_inBundle": false,
+ "_integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "_location": "/move-concurrently/aproba",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "aproba@^1.1.1",
+ "name": "aproba",
+ "escapedName": "aproba",
+ "rawSpec": "^1.1.1",
+ "saveSpec": null,
+ "fetchSpec": "^1.1.1"
+ },
+ "_requiredBy": [
+ "/move-concurrently"
+ ],
+ "_resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "_shasum": "6802e6264efd18c790a1b0d517f0f2627bf2c94a",
+ "_spec": "aproba@^1.1.1",
+ "_where": "/Users/aeschright/code/cli/node_modules/move-concurrently",
+ "author": {
+ "name": "Rebecca Turner",
+ "email": "me@re-becca.org"
+ },
+ "bugs": {
+ "url": "https://github.com/iarna/aproba/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "A ridiculously light-weight argument validator (now browser friendly)",
+ "devDependencies": {
+ "standard": "^10.0.3",
+ "tap": "^10.0.2"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/iarna/aproba",
+ "keywords": [
+ "argument",
+ "validate"
+ ],
+ "license": "ISC",
+ "main": "index.js",
+ "name": "aproba",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/iarna/aproba.git"
+ },
+ "scripts": {
+ "test": "standard && tap -j3 test/*.js"
+ },
+ "version": "1.2.0"
+}
diff --git a/node_modules/run-queue/node_modules/aproba/LICENSE b/node_modules/run-queue/node_modules/aproba/LICENSE
new file mode 100644
index 000000000..f4be44d88
--- /dev/null
+++ b/node_modules/run-queue/node_modules/aproba/LICENSE
@@ -0,0 +1,14 @@
+Copyright (c) 2015, Rebecca Turner <me@re-becca.org>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
diff --git a/node_modules/run-queue/node_modules/aproba/README.md b/node_modules/run-queue/node_modules/aproba/README.md
new file mode 100644
index 000000000..0bfc594c5
--- /dev/null
+++ b/node_modules/run-queue/node_modules/aproba/README.md
@@ -0,0 +1,94 @@
+aproba
+======
+
+A ridiculously light-weight function argument validator
+
+```
+var validate = require("aproba")
+
+function myfunc(a, b, c) {
+ // `a` must be a string, `b` a number, `c` a function
+ validate('SNF', arguments) // [a,b,c] is also valid
+}
+
+myfunc('test', 23, function () {}) // ok
+myfunc(123, 23, function () {}) // type error
+myfunc('test', 23) // missing arg error
+myfunc('test', 23, function () {}, true) // too many args error
+
+```
+
+Valid types are:
+
+| type | description
+| :--: | :----------
+| * | matches any type
+| A | `Array.isArray` OR an `arguments` object
+| S | typeof == string
+| N | typeof == number
+| F | typeof == function
+| O | typeof == object and not type A and not type E
+| B | typeof == boolean
+| E | `instanceof Error` OR `null` **(special: see below)**
+| Z | == `null`
+
+Validation failures throw one of three exception types, distinguished by a
+`code` property of `EMISSINGARG`, `EINVALIDTYPE` or `ETOOMANYARGS`.
+
+If you pass in an invalid type then it will throw with a code of
+`EUNKNOWNTYPE`.
+
+If an **error** argument is found and is not null then the remaining
+arguments are optional. That is, if you say `ESO` then that's like using a
+non-magical `E` in: `E|ESO|ZSO`.
+
+### But I have optional arguments?!
+
+You can provide more than one signature by separating them with pipes `|`.
+If any signature matches the arguments then they'll be considered valid.
+
+So for example, say you wanted to write a signature for
+`fs.createWriteStream`. The docs for it describe it thusly:
+
+```
+fs.createWriteStream(path[, options])
+```
+
+This would be a signature of `SO|S`. That is, a string and and object, or
+just a string.
+
+Now, if you read the full `fs` docs, you'll see that actually path can ALSO
+be a buffer. And options can be a string, that is:
+```
+path <String> | <Buffer>
+options <String> | <Object>
+```
+
+To reproduce this you have to fully enumerate all of the possible
+combinations and that implies a signature of `SO|SS|OO|OS|S|O`. The
+awkwardness is a feature: It reminds you of the complexity you're adding to
+your API when you do this sort of thing.
+
+
+### Browser support
+
+This has no dependencies and should work in browsers, though you'll have
+noisier stack traces.
+
+### Why this exists
+
+I wanted a very simple argument validator. It needed to do two things:
+
+1. Be more concise and easier to use than assertions
+
+2. Not encourage an infinite bikeshed of DSLs
+
+This is why types are specified by a single character and there's no such
+thing as an optional argument.
+
+This is not intended to validate user data. This is specifically about
+asserting the interface of your functions.
+
+If you need greater validation, I encourage you to write them by hand or
+look elsewhere.
+
diff --git a/node_modules/run-queue/node_modules/aproba/index.js b/node_modules/run-queue/node_modules/aproba/index.js
new file mode 100644
index 000000000..6f3f797c0
--- /dev/null
+++ b/node_modules/run-queue/node_modules/aproba/index.js
@@ -0,0 +1,105 @@
+'use strict'
+
+function isArguments (thingy) {
+ return thingy != null && typeof thingy === 'object' && thingy.hasOwnProperty('callee')
+}
+
+var types = {
+ '*': {label: 'any', check: function () { return true }},
+ A: {label: 'array', check: function (thingy) { return Array.isArray(thingy) || isArguments(thingy) }},
+ S: {label: 'string', check: function (thingy) { return typeof thingy === 'string' }},
+ N: {label: 'number', check: function (thingy) { return typeof thingy === 'number' }},
+ F: {label: 'function', check: function (thingy) { return typeof thingy === 'function' }},
+ O: {label: 'object', check: function (thingy) { return typeof thingy === 'object' && thingy != null && !types.A.check(thingy) && !types.E.check(thingy) }},
+ B: {label: 'boolean', check: function (thingy) { return typeof thingy === 'boolean' }},
+ E: {label: 'error', check: function (thingy) { return thingy instanceof Error }},
+ Z: {label: 'null', check: function (thingy) { return thingy == null }}
+}
+
+function addSchema (schema, arity) {
+ var group = arity[schema.length] = arity[schema.length] || []
+ if (group.indexOf(schema) === -1) group.push(schema)
+}
+
+var validate = module.exports = function (rawSchemas, args) {
+ if (arguments.length !== 2) throw wrongNumberOfArgs(['SA'], arguments.length)
+ if (!rawSchemas) throw missingRequiredArg(0, 'rawSchemas')
+ if (!args) throw missingRequiredArg(1, 'args')
+ if (!types.S.check(rawSchemas)) throw invalidType(0, ['string'], rawSchemas)
+ if (!types.A.check(args)) throw invalidType(1, ['array'], args)
+ var schemas = rawSchemas.split('|')
+ var arity = {}
+
+ schemas.forEach(function (schema) {
+ for (var ii = 0; ii < schema.length; ++ii) {
+ var type = schema[ii]
+ if (!types[type]) throw unknownType(ii, type)
+ }
+ if (/E.*E/.test(schema)) throw moreThanOneError(schema)
+ addSchema(schema, arity)
+ if (/E/.test(schema)) {
+ addSchema(schema.replace(/E.*$/, 'E'), arity)
+ addSchema(schema.replace(/E/, 'Z'), arity)
+ if (schema.length === 1) addSchema('', arity)
+ }
+ })
+ var matching = arity[args.length]
+ if (!matching) {
+ throw wrongNumberOfArgs(Object.keys(arity), args.length)
+ }
+ for (var ii = 0; ii < args.length; ++ii) {
+ var newMatching = matching.filter(function (schema) {
+ var type = schema[ii]
+ var typeCheck = types[type].check
+ return typeCheck(args[ii])
+ })
+ if (!newMatching.length) {
+ var labels = matching.map(function (schema) {
+ return types[schema[ii]].label
+ }).filter(function (schema) { return schema != null })
+ throw invalidType(ii, labels, args[ii])
+ }
+ matching = newMatching
+ }
+}
+
+function missingRequiredArg (num) {
+ return newException('EMISSINGARG', 'Missing required argument #' + (num + 1))
+}
+
+function unknownType (num, type) {
+ return newException('EUNKNOWNTYPE', 'Unknown type ' + type + ' in argument #' + (num + 1))
+}
+
+function invalidType (num, expectedTypes, value) {
+ var valueType
+ Object.keys(types).forEach(function (typeCode) {
+ if (types[typeCode].check(value)) valueType = types[typeCode].label
+ })
+ return newException('EINVALIDTYPE', 'Argument #' + (num + 1) + ': Expected ' +
+ englishList(expectedTypes) + ' but got ' + valueType)
+}
+
+function englishList (list) {
+ return list.join(', ').replace(/, ([^,]+)$/, ' or $1')
+}
+
+function wrongNumberOfArgs (expected, got) {
+ var english = englishList(expected)
+ var args = expected.every(function (ex) { return ex.length === 1 })
+ ? 'argument'
+ : 'arguments'
+ return newException('EWRONGARGCOUNT', 'Expected ' + english + ' ' + args + ' but got ' + got)
+}
+
+function moreThanOneError (schema) {
+ return newException('ETOOMANYERRORTYPES',
+ 'Only one error type per argument signature is allowed, more than one found in "' + schema + '"')
+}
+
+function newException (code, msg) {
+ var e = new Error(msg)
+ e.code = code
+ if (Error.captureStackTrace) Error.captureStackTrace(e, validate)
+ return e
+}
diff --git a/node_modules/run-queue/node_modules/aproba/package.json b/node_modules/run-queue/node_modules/aproba/package.json
new file mode 100644
index 000000000..04fb91f55
--- /dev/null
+++ b/node_modules/run-queue/node_modules/aproba/package.json
@@ -0,0 +1,62 @@
+{
+ "_from": "aproba@^1.1.1",
+ "_id": "aproba@1.2.0",
+ "_inBundle": false,
+ "_integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "_location": "/run-queue/aproba",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "aproba@^1.1.1",
+ "name": "aproba",
+ "escapedName": "aproba",
+ "rawSpec": "^1.1.1",
+ "saveSpec": null,
+ "fetchSpec": "^1.1.1"
+ },
+ "_requiredBy": [
+ "/run-queue"
+ ],
+ "_resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "_shasum": "6802e6264efd18c790a1b0d517f0f2627bf2c94a",
+ "_spec": "aproba@^1.1.1",
+ "_where": "/Users/aeschright/code/cli/node_modules/run-queue",
+ "author": {
+ "name": "Rebecca Turner",
+ "email": "me@re-becca.org"
+ },
+ "bugs": {
+ "url": "https://github.com/iarna/aproba/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "A ridiculously light-weight argument validator (now browser friendly)",
+ "devDependencies": {
+ "standard": "^10.0.3",
+ "tap": "^10.0.2"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/iarna/aproba",
+ "keywords": [
+ "argument",
+ "validate"
+ ],
+ "license": "ISC",
+ "main": "index.js",
+ "name": "aproba",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/iarna/aproba.git"
+ },
+ "scripts": {
+ "test": "standard && tap -j3 test/*.js"
+ },
+ "version": "1.2.0"
+}