summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/move-concurrently/node_modules/aproba
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/move-concurrently/node_modules/aproba')
-rw-r--r--deps/npm/node_modules/move-concurrently/node_modules/aproba/LICENSE13
-rw-r--r--deps/npm/node_modules/move-concurrently/node_modules/aproba/README.md93
-rw-r--r--deps/npm/node_modules/move-concurrently/node_modules/aproba/index.js105
-rw-r--r--deps/npm/node_modules/move-concurrently/node_modules/aproba/package.json62
4 files changed, 273 insertions, 0 deletions
diff --git a/deps/npm/node_modules/move-concurrently/node_modules/aproba/LICENSE b/deps/npm/node_modules/move-concurrently/node_modules/aproba/LICENSE
new file mode 100644
index 0000000000..2a4982dc40
--- /dev/null
+++ b/deps/npm/node_modules/move-concurrently/node_modules/aproba/LICENSE
@@ -0,0 +1,13 @@
+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/deps/npm/node_modules/move-concurrently/node_modules/aproba/README.md b/deps/npm/node_modules/move-concurrently/node_modules/aproba/README.md
new file mode 100644
index 0000000000..e94799201c
--- /dev/null
+++ b/deps/npm/node_modules/move-concurrently/node_modules/aproba/README.md
@@ -0,0 +1,93 @@
+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/deps/npm/node_modules/move-concurrently/node_modules/aproba/index.js b/deps/npm/node_modules/move-concurrently/node_modules/aproba/index.js
new file mode 100644
index 0000000000..6f3f797c09
--- /dev/null
+++ b/deps/npm/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/deps/npm/node_modules/move-concurrently/node_modules/aproba/package.json b/deps/npm/node_modules/move-concurrently/node_modules/aproba/package.json
new file mode 100644
index 0000000000..eba0d3e6ea
--- /dev/null
+++ b/deps/npm/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"
+}