diff --git a/aws-node-github-webhook-listener/handler.js b/aws-node-github-webhook-listener/handler.js index a4d47b0a0..cf498298b 100644 --- a/aws-node-github-webhook-listener/handler.js +++ b/aws-node-github-webhook-listener/handler.js @@ -14,28 +14,48 @@ module.exports.githubWebhookListener = (event, context, callback) => { const calculatedSig = signRequestBody(token, event.body); if (typeof token !== 'string') { - errMsg = '[401] must provide a \'GITHUB_WEBHOOK_SECRET\' env variable'; - return callback(new Error(errMsg)); + errMsg = 'Must provide a \'GITHUB_WEBHOOK_SECRET\' env variable'; + return callback(null, { + statusCode: 401, + headers: { 'Content-Type': 'text/plain' }, + body: errMsg, + }); } if (!sig) { - errMsg = '[401] No X-Hub-Signature found on request'; - return callback(new Error(errMsg)); + errMsg = 'No X-Hub-Signature found on request'; + return callback(null, { + statusCode: 401, + headers: { 'Content-Type': 'text/plain' }, + body: errMsg, + }); } if (!githubEvent) { - errMsg = '[422] No X-Github-Event found on request'; - return callback(new Error(errMsg)); + errMsg = 'No X-Github-Event found on request'; + return callback(null, { + statusCode: 422, + headers: { 'Content-Type': 'text/plain' }, + body: errMsg, + }); } if (!id) { - errMsg = '[401] No X-Github-Delivery found on request'; - return callback(new Error(errMsg)); + errMsg = 'No X-Github-Delivery found on request'; + return callback(null, { + statusCode: 401, + headers: { 'Content-Type': 'text/plain' }, + body: errMsg, + }); } if (sig !== calculatedSig) { - errMsg = '[401] X-Hub-Signature incorrect. Github webhook token doesn\'t match'; - return callback(new Error(errMsg)); + errMsg = 'X-Hub-Signature incorrect. Github webhook token doesn\'t match'; + return callback(null, { + statusCode: 401, + headers: { 'Content-Type': 'text/plain' }, + body: errMsg, + }); } /* eslint-disable */ diff --git a/aws-node-rekognition-analysis-s3-image/handler.js b/aws-node-rekognition-analysis-s3-image/handler.js index 746e25e3a..379ef0b3d 100644 --- a/aws-node-rekognition-analysis-s3-image/handler.js +++ b/aws-node-rekognition-analysis-s3-image/handler.js @@ -23,6 +23,10 @@ module.exports.imageAnalysis = (event, context, callback) => { callback(null, response); }) .catch((error) => { - callback(error, null); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: error.message || 'Internal server error', + }); }); }; diff --git a/aws-node-rest-api-mongodb/handler.js b/aws-node-rest-api-mongodb/handler.js index 9bbd41acb..dbd476781 100644 --- a/aws-node-rest-api-mongodb/handler.js +++ b/aws-node-rest-api-mongodb/handler.js @@ -7,11 +7,21 @@ mongoose.Promise = bluebird; const mongoString = ''; // MongoDB Url +const createErrorResponse = (statusCode, message) => ({ + statusCode: statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: message || 'Incorrect id', +}); + module.exports.user = (event, context, callback) => { const db = mongoose.connect(mongoString).connection; const id = event.pathParameters.id; - if (!validator.isAlphanumeric(id)) throw Error('Incorrect id'); + if (!validator.isAlphanumeric(id)) { + callback(null, createErrorResponse(400, 'Incorrect id')); + db.close(); + return; + } db.once('open', () => { UserModel @@ -20,7 +30,7 @@ module.exports.user = (event, context, callback) => { callback(null, { statusCode: 200, body: JSON.stringify(user) }); }) .catch((err) => { - callback(err); + callback(null, createErrorResponse(err.statusCode, err.message)); }) .finally(() => { // Close db connection or node event loop won't exit , and lambda will timeout @@ -51,7 +61,9 @@ module.exports.createUser = (event, context, callback) => { if (errs) { console.log(errs); - throw Error('Incorrect user data'); + callback(null, createErrorResponse(400, 'Incorrect user data')); + db.close(); + return; } @@ -62,7 +74,7 @@ module.exports.createUser = (event, context, callback) => { callback(null, { statusCode: 200, body: JSON.stringify({ id: user[mongooseId] }) }); }) .catch((err) => { - callback(err); + callback(null, createErrorResponse(err.statusCode, err.message)); }) .finally(() => { db.close(); @@ -74,7 +86,11 @@ module.exports.deleteUser = (event, context, callback) => { const db = mongoose.connect(mongoString).connection; const id = event.pathParameters.id; - if (!validator.isAlphanumeric(id)) throw Error('Incorrect id'); + if (!validator.isAlphanumeric(id)) { + callback(null, createErrorResponse(400, 'Incorrect id')); + db.close(); + return; + } db.once('open', () => { UserModel @@ -83,7 +99,7 @@ module.exports.deleteUser = (event, context, callback) => { callback(null, { statusCode: 200, body: JSON.stringify('Ok') }); }) .catch((err) => { - callback(err); + callback(null, createErrorResponse(err.statusCode, err.message)); }) .finally(() => { db.close(); @@ -98,7 +114,11 @@ module.exports.updateUser = (event, context, callback) => { let errs = {}; let user = {}; - if (!validator.isAlphanumeric(id)) throw Error('Incorrect id'); + if (!validator.isAlphanumeric(id)) { + callback(null, createErrorResponse(400, 'Incorrect id')); + db.close(); + return; + } user = new UserModel({ _id: id, name: data.name, @@ -109,7 +129,12 @@ module.exports.updateUser = (event, context, callback) => { errs = user.validateSync(); - if (errs) throw Error('Incorrect parameter'); + if (errs) { + callback(null, createErrorResponse(400, 'Incorrect parameter')); + db.close(); + return; + } + db.once('open', () => { // UserModel.save() could be used too UserModel.findByIdAndUpdate(id, user) @@ -117,7 +142,7 @@ module.exports.updateUser = (event, context, callback) => { callback(null, { statusCode: 200, body: JSON.stringify('Ok') }); }) .catch((err) => { - callback(err); + callback(err, createErrorResponse(err.statusCode, err.message)); }) .finally(() => { db.close(); diff --git a/aws-node-rest-api-with-dynamodb-and-offline/todos/create.js b/aws-node-rest-api-with-dynamodb-and-offline/todos/create.js index 2b9561cbf..5077cf66f 100644 --- a/aws-node-rest-api-with-dynamodb-and-offline/todos/create.js +++ b/aws-node-rest-api-with-dynamodb-and-offline/todos/create.js @@ -8,7 +8,11 @@ module.exports.create = (event, context, callback) => { const data = JSON.parse(event.body); if (typeof data.text !== 'string') { console.error('Validation Failed'); - callback(new Error('Couldn\'t create the todo item.')); + callback(null, { + statusCode: 400, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t create the todo item.', + }); return; } @@ -28,7 +32,11 @@ module.exports.create = (event, context, callback) => { // handle potential errors if (error) { console.error(error); - callback(new Error('Couldn\'t create the todo item.')); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t create the todo item.', + }); return; } diff --git a/aws-node-rest-api-with-dynamodb-and-offline/todos/delete.js b/aws-node-rest-api-with-dynamodb-and-offline/todos/delete.js index ebc949d65..60f7dea13 100644 --- a/aws-node-rest-api-with-dynamodb-and-offline/todos/delete.js +++ b/aws-node-rest-api-with-dynamodb-and-offline/todos/delete.js @@ -15,7 +15,11 @@ module.exports.delete = (event, context, callback) => { // handle potential errors if (error) { console.error(error); - callback(new Error('Couldn\'t remove the todo item.')); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t remove the todo item.', + }); return; } diff --git a/aws-node-rest-api-with-dynamodb-and-offline/todos/get.js b/aws-node-rest-api-with-dynamodb-and-offline/todos/get.js index d07592ae4..cfe50586c 100644 --- a/aws-node-rest-api-with-dynamodb-and-offline/todos/get.js +++ b/aws-node-rest-api-with-dynamodb-and-offline/todos/get.js @@ -15,7 +15,11 @@ module.exports.get = (event, context, callback) => { // handle potential errors if (error) { console.error(error); - callback(new Error('Couldn\'t fetch the todo item.')); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t fetch the todo item.', + }); return; } diff --git a/aws-node-rest-api-with-dynamodb-and-offline/todos/list.js b/aws-node-rest-api-with-dynamodb-and-offline/todos/list.js index 6fd33b7e8..9592c7498 100644 --- a/aws-node-rest-api-with-dynamodb-and-offline/todos/list.js +++ b/aws-node-rest-api-with-dynamodb-and-offline/todos/list.js @@ -12,7 +12,11 @@ module.exports.list = (event, context, callback) => { // handle potential errors if (error) { console.error(error); - callback(new Error('Couldn\'t fetch the todos.')); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t fetch the todo item.', + }); return; } diff --git a/aws-node-rest-api-with-dynamodb-and-offline/todos/update.js b/aws-node-rest-api-with-dynamodb-and-offline/todos/update.js index ab3a0c8d9..5a0106fa1 100644 --- a/aws-node-rest-api-with-dynamodb-and-offline/todos/update.js +++ b/aws-node-rest-api-with-dynamodb-and-offline/todos/update.js @@ -9,7 +9,11 @@ module.exports.update = (event, context, callback) => { // validation if (typeof data.text !== 'string' || typeof data.checked !== 'boolean') { console.error('Validation Failed'); - callback(new Error('Couldn\'t update the todo item.')); + callback(null, { + statusCode: 400, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t update the todo item.', + }); return; } @@ -35,7 +39,11 @@ module.exports.update = (event, context, callback) => { // handle potential errors if (error) { console.error(error); - callback(new Error('Couldn\'t update the todo item.')); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t update the todo item.', + }); return; } diff --git a/aws-node-rest-api-with-dynamodb/todos/create.js b/aws-node-rest-api-with-dynamodb/todos/create.js index 514e33699..81ed8df9a 100644 --- a/aws-node-rest-api-with-dynamodb/todos/create.js +++ b/aws-node-rest-api-with-dynamodb/todos/create.js @@ -10,7 +10,11 @@ module.exports.create = (event, context, callback) => { const data = JSON.parse(event.body); if (typeof data.text !== 'string') { console.error('Validation Failed'); - callback(new Error('Couldn\'t create the todo item.')); + callback(null, { + statusCode: 400, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t create the todo item.', + }); return; } @@ -30,7 +34,11 @@ module.exports.create = (event, context, callback) => { // handle potential errors if (error) { console.error(error); - callback(new Error('Couldn\'t create the todo item.')); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t create the todo item.', + }); return; } diff --git a/aws-node-rest-api-with-dynamodb/todos/delete.js b/aws-node-rest-api-with-dynamodb/todos/delete.js index c3dd9598e..4192ac737 100644 --- a/aws-node-rest-api-with-dynamodb/todos/delete.js +++ b/aws-node-rest-api-with-dynamodb/todos/delete.js @@ -17,7 +17,11 @@ module.exports.delete = (event, context, callback) => { // handle potential errors if (error) { console.error(error); - callback(new Error('Couldn\'t remove the todo item.')); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t remove the todo item.', + }); return; } diff --git a/aws-node-rest-api-with-dynamodb/todos/get.js b/aws-node-rest-api-with-dynamodb/todos/get.js index a56af950d..4cc34d307 100644 --- a/aws-node-rest-api-with-dynamodb/todos/get.js +++ b/aws-node-rest-api-with-dynamodb/todos/get.js @@ -17,7 +17,11 @@ module.exports.get = (event, context, callback) => { // handle potential errors if (error) { console.error(error); - callback(new Error('Couldn\'t fetch the todo item.')); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t fetch the todo item.', + }); return; } diff --git a/aws-node-rest-api-with-dynamodb/todos/list.js b/aws-node-rest-api-with-dynamodb/todos/list.js index 30dd6e075..5818246cd 100644 --- a/aws-node-rest-api-with-dynamodb/todos/list.js +++ b/aws-node-rest-api-with-dynamodb/todos/list.js @@ -13,7 +13,11 @@ module.exports.list = (event, context, callback) => { // handle potential errors if (error) { console.error(error); - callback(new Error('Couldn\'t fetch the todos.')); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t fetch the todos.', + }); return; } diff --git a/aws-node-rest-api-with-dynamodb/todos/update.js b/aws-node-rest-api-with-dynamodb/todos/update.js index 26968ad02..c852c6202 100644 --- a/aws-node-rest-api-with-dynamodb/todos/update.js +++ b/aws-node-rest-api-with-dynamodb/todos/update.js @@ -11,7 +11,11 @@ module.exports.update = (event, context, callback) => { // validation if (typeof data.text !== 'string' || typeof data.checked !== 'boolean') { console.error('Validation Failed'); - callback(new Error('Couldn\'t update the todo item.')); + callback(null, { + statusCode: 400, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t update the todo item.', + }); return; } @@ -37,7 +41,11 @@ module.exports.update = (event, context, callback) => { // handle potential errors if (error) { console.error(error); - callback(new Error('Couldn\'t update the todo item.')); + callback(null, { + statusCode: error.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t fetch the todo item.', + }); return; } diff --git a/aws-node-stripe-integration/handler.js b/aws-node-stripe-integration/handler.js index 564861037..db28275c3 100644 --- a/aws-node-stripe-integration/handler.js +++ b/aws-node-stripe-integration/handler.js @@ -41,6 +41,10 @@ module.exports.incoming = (event, context, callback) => { callback(null, response); }); } catch (err) { - context.fail(err); + callback(null, { + statusCode: err.statusCode || 501, + headers: { 'Content-Type': 'text/plain' }, + body: err.message || 'Internal server error', + }); } }; diff --git a/aws-node-text-analysis-via-sns-post-processing/addNote.js b/aws-node-text-analysis-via-sns-post-processing/addNote.js index b2bc7a1fb..0b0ea838b 100644 --- a/aws-node-text-analysis-via-sns-post-processing/addNote.js +++ b/aws-node-text-analysis-via-sns-post-processing/addNote.js @@ -9,7 +9,11 @@ module.exports.addNote = (event, context, callback) => { const data = JSON.parse(event.body); if (typeof data.note !== 'string') { console.error('Validation Failed'); - callback(new Error('Couldn\'t add the note.')); + callback(null, { + statusCode: 400, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t add the note.', + }); return; } @@ -21,7 +25,11 @@ module.exports.addNote = (event, context, callback) => { sns.publish(params, (error) => { if (error) { console.error(error); - callback(new Error('Couldn\'t add the note due an internal error. Please try again later.')); + callback(null, { + statusCode: 501, + headers: { 'Content-Type': 'text/plain' }, + body: 'Couldn\'t add the note due an internal error. Please try again later.', + }); } // create a resonse const response = { diff --git a/package-lock.json b/package-lock.json index 90830de5d..cfcdc74e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,6 +2,7 @@ "name": "serverless-examples", "version": "0.0.0", "lockfileVersion": 1, + "requires": true, "dependencies": { "acorn": { "version": "5.0.3", @@ -12,6 +13,9 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "requires": { + "acorn": "3.3.0" + }, "dependencies": { "acorn": { "version": "3.3.0", @@ -23,7 +27,11 @@ "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=" + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } }, "ajv-keywords": { "version": "1.5.1", @@ -38,7 +46,10 @@ "ansi-red": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=" + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "requires": { + "ansi-wrap": "0.1.0" + } }, "ansi-regex": { "version": "2.1.1", @@ -58,12 +69,18 @@ "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=" + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "requires": { + "sprintf-js": "1.0.3" + } }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=" + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } }, "array-uniq": { "version": "1.0.3", @@ -88,7 +105,12 @@ "babel-code-frame": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=" + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.1" + } }, "balanced-match": { "version": "0.4.2", @@ -98,7 +120,11 @@ "brace-expansion": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=" + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } }, "buffer-shims": { "version": "1.0.0", @@ -113,7 +139,10 @@ "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=" + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "requires": { + "callsites": "0.2.0" + } }, "callsites": { "version": "0.2.0", @@ -128,7 +157,14 @@ "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "circular-json": { "version": "0.3.1", @@ -138,7 +174,10 @@ "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=" + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "1.0.1" + } }, "cli-width": { "version": "2.1.0", @@ -163,7 +202,10 @@ "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=" + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "requires": { + "graceful-readlink": "1.0.1" + } }, "concat-map": { "version": "0.0.1", @@ -173,7 +215,12 @@ "concat-stream": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=" + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.2.9", + "typedarray": "0.0.6" + } }, "contains-path": { "version": "0.1.0", @@ -188,12 +235,18 @@ "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=" + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "requires": { + "es5-ext": "0.10.22" + } }, "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=" + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "2.0.0" + } }, "deep-is": { "version": "0.1.3", @@ -208,7 +261,16 @@ "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=" + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" + } }, "diacritics-map": { "version": "0.1.0", @@ -218,42 +280,83 @@ "doctrine": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=" + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=" + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + } }, "es5-ext": { "version": "0.10.22", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.22.tgz", - "integrity": "sha512-YXTXSlZkJsVwMEVljp1Bh5P9+Raa3524OMl9kywGMp1aazKTCnAqORRL/8dkuqNHk+LRYe0LezuS8PlUt3+mOw==" + "integrity": "sha512-YXTXSlZkJsVwMEVljp1Bh5P9+Raa3524OMl9kywGMp1aazKTCnAqORRL/8dkuqNHk+LRYe0LezuS8PlUt3+mOw==", + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } }, "es6-iterator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=" + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.22", + "es6-symbol": "3.1.1" + } }, "es6-map": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=" + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.22", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } }, "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=" + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.22", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=" + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.22" + } }, "es6-weak-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=" + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.22", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } }, "escape-string-regexp": { "version": "1.0.5", @@ -263,12 +366,55 @@ "escope": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=" + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.1.0", + "estraverse": "4.2.0" + } }, "eslint": { "version": "3.19.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=" + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "requires": { + "babel-code-frame": "6.22.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.8", + "doctrine": "2.0.0", + "escope": "3.6.0", + "espree": "3.4.3", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.1.2", + "globals": "9.17.0", + "ignore": "3.3.3", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.8.4", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.7.7", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + } }, "eslint-config-airbnb-base": { "version": "10.0.1", @@ -278,17 +424,29 @@ "eslint-import-resolver-node": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", - "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=" + "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", + "requires": { + "debug": "2.6.8", + "object-assign": "4.1.1", + "resolve": "1.3.3" + } }, "eslint-module-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.0.0.tgz", "integrity": "sha1-pvjCHZATWHWc3DXbrBmCrh7li84=", + "requires": { + "debug": "2.2.0", + "pkg-dir": "1.0.0" + }, "dependencies": { "debug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=" + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } }, "ms": { "version": "0.7.1", @@ -301,18 +459,38 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.3.0.tgz", "integrity": "sha1-N8gB4K2g4pbL3yDD85OstbUq82s=", + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.2.3", + "eslint-module-utils": "2.0.0", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" + }, "dependencies": { "doctrine": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=" + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } } } }, "espree": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", - "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=" + "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "requires": { + "acorn": "5.0.3", + "acorn-jsx": "3.0.1" + } }, "esprima": { "version": "3.1.3", @@ -322,12 +500,19 @@ "esquery": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=" + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "requires": { + "estraverse": "4.2.0" + } }, "esrecurse": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", + "requires": { + "estraverse": "4.1.1", + "object-assign": "4.1.1" + }, "dependencies": { "estraverse": { "version": "4.1.1", @@ -349,7 +534,11 @@ "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=" + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.22" + } }, "exit-hook": { "version": "1.1.1", @@ -359,12 +548,18 @@ "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=" + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=" + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } }, "fast-levenshtein": { "version": "2.0.6", @@ -374,27 +569,52 @@ "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=" + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } }, "file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=" + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "requires": { + "flat-cache": "1.2.2", + "object-assign": "4.1.1" + } }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=" + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.6", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=" + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } }, "flat-cache": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=" + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "requires": { + "circular-json": "0.3.1", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } }, "for-in": { "version": "1.0.2", @@ -404,7 +624,12 @@ "fs-extra": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=" + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } }, "fs.realpath": { "version": "1.0.0", @@ -424,12 +649,23 @@ "generate-object-property": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=" + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "requires": { + "is-property": "1.0.2" + } }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "globals": { "version": "9.17.0", @@ -439,7 +675,15 @@ "globby": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=" + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "graceful-fs": { "version": "4.1.11", @@ -454,17 +698,30 @@ "gray-matter": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", - "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=" + "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=", + "requires": { + "ansi-red": "0.1.1", + "coffee-script": "1.12.6", + "extend-shallow": "2.0.1", + "js-yaml": "3.8.4", + "toml": "2.3.2" + } }, "has": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=" + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.0" + } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } }, "hosted-git-info": { "version": "2.4.2", @@ -474,7 +731,12 @@ "http-basic": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-2.5.1.tgz", - "integrity": "sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s=" + "integrity": "sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s=", + "requires": { + "caseless": "0.11.0", + "concat-stream": "1.6.0", + "http-response-object": "1.1.0" + } }, "http-response-object": { "version": "1.1.0", @@ -494,7 +756,11 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -504,7 +770,22 @@ "inquirer": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=" + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.1.0", + "figures": "1.7.0", + "lodash": "4.17.4", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } }, "interpret": { "version": "1.0.3", @@ -524,7 +805,10 @@ "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=" + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "1.1.1" + } }, "is-extendable": { "version": "0.1.1", @@ -534,7 +818,10 @@ "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } }, "is-local-path": { "version": "0.1.6", @@ -544,12 +831,21 @@ "is-my-json-valid": { "version": "2.16.0", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", - "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=" + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=" + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } }, "is-path-cwd": { "version": "1.0.0", @@ -559,12 +855,18 @@ "is-path-in-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=" + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "requires": { + "is-path-inside": "1.0.0" + } }, "is-path-inside": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=" + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "requires": { + "path-is-inside": "1.0.2" + } }, "is-property": { "version": "1.0.2", @@ -574,7 +876,10 @@ "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=" + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "requires": { + "tryit": "1.0.3" + } }, "isarray": { "version": "1.0.0", @@ -584,7 +889,10 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=" + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } }, "js-tokens": { "version": "3.0.1", @@ -594,17 +902,27 @@ "js-yaml": { "version": "3.8.4", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", - "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=" + "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", + "requires": { + "argparse": "1.0.9", + "esprima": "3.1.3" + } }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=" + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "0.0.0" + } }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=" + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "4.1.11" + } }, "jsonify": { "version": "0.0.0", @@ -619,37 +937,66 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } }, "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=" + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "requires": { + "graceful-fs": "4.1.11" + } }, "lazy-cache": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=" + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=" + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } }, "list-item": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz", - "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=" + "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=", + "requires": { + "expand-range": "1.8.2", + "extend-shallow": "2.0.1", + "is-number": "2.1.0", + "repeat-string": "1.6.1" + } }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=" + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, "dependencies": { "path-exists": { "version": "3.0.0", @@ -677,16 +1024,36 @@ "version": "0.1.17", "resolved": "https://registry.npmjs.org/markdown-magic/-/markdown-magic-0.1.17.tgz", "integrity": "sha1-lj/jsNvoIF5ycJRJpErS9NsR/24=", + "requires": { + "commander": "2.9.0", + "deepmerge": "1.3.2", + "find-up": "2.1.0", + "fs-extra": "1.0.0", + "globby": "6.1.0", + "is-local-path": "0.1.6", + "markdown-toc": "1.1.0", + "sync-request": "3.0.1" + }, "dependencies": { "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } }, "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=" + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } } } }, @@ -694,6 +1061,20 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-1.1.0.tgz", "integrity": "sha1-GORyN9iVSelEcSHmniyoU8otdSo=", + "requires": { + "concat-stream": "1.6.0", + "diacritics-map": "0.1.0", + "gray-matter": "2.1.1", + "lazy-cache": "2.0.2", + "list-item": "1.1.1", + "markdown-link": "0.1.1", + "minimist": "1.2.0", + "mixin-deep": "1.2.0", + "object.pick": "1.2.0", + "remarkable": "1.7.1", + "repeat-string": "1.6.1", + "strip-color": "0.1.0" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -705,7 +1086,10 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.7" + } }, "minimist": { "version": "0.0.8", @@ -715,12 +1099,19 @@ "mixin-deep": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.2.0.tgz", - "integrity": "sha1-0CuMb4ttS49ZgtP9AJxJGYUcP+I=" + "integrity": "sha1-0CuMb4ttS49ZgtP9AJxJGYUcP+I=", + "requires": { + "for-in": "1.0.2", + "is-extendable": "0.1.1" + } }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -740,7 +1131,13 @@ "normalize-package-data": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", - "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=" + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", + "requires": { + "hosted-git-info": "2.4.2", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + } }, "number-is-nan": { "version": "1.0.1", @@ -755,12 +1152,18 @@ "object.pick": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", - "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=" + "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=", + "requires": { + "isobject": "2.1.0" + } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } }, "onetime": { "version": "1.1.0", @@ -770,7 +1173,15 @@ "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=" + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } }, "os-homedir": { "version": "1.0.2", @@ -785,17 +1196,26 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=" + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "1.1.0" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "2.0.1" + } }, "path-is-absolute": { "version": "1.0.1", @@ -815,7 +1235,10 @@ "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=" + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + } }, "pify": { "version": "2.3.0", @@ -830,12 +1253,18 @@ "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } }, "pkg-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=" + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "1.1.2" + } }, "pluralize": { "version": "1.2.1", @@ -860,7 +1289,10 @@ "promise": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", - "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=" + "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=", + "requires": { + "asap": "2.0.5" + } }, "qs": { "version": "6.4.0", @@ -870,49 +1302,90 @@ "randomatic": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz", - "integrity": "sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=" + "integrity": "sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=", + "requires": { + "is-number": "2.1.0", + "kind-of": "3.2.2" + } }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=" + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.3.8", + "path-type": "2.0.0" + } }, "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + }, "dependencies": { "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } } } }, "readable-stream": { "version": "2.2.9", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=" + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } }, "readline2": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=" + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + } }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=" + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "1.3.3" + } }, "remarkable": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.1.tgz", "integrity": "sha1-qspJchALZqZCpjoQIcpLrBvjv/Y=", + "requires": { + "argparse": "0.1.16", + "autolinker": "0.15.3" + }, "dependencies": { "argparse": { "version": "0.1.16", "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=" + "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "requires": { + "underscore": "1.7.0", + "underscore.string": "2.4.0" + } } } }, @@ -929,12 +1402,19 @@ "require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=" + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } }, "resolve": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=" + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "requires": { + "path-parse": "1.0.5" + } }, "resolve-from": { "version": "1.0.1", @@ -944,17 +1424,27 @@ "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=" + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } }, "rimraf": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=" + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "requires": { + "glob": "7.1.2" + } }, "run-async": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=" + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "requires": { + "once": "1.4.0" + } }, "rx-lite": { "version": "3.1.2", @@ -974,12 +1464,20 @@ "set-getter": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=" + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "requires": { + "to-object-path": "0.3.0" + } }, "shelljs": { "version": "0.7.7", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", - "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=" + "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", + "requires": { + "glob": "7.1.2", + "interpret": "1.0.3", + "rechoir": "0.6.2" + } }, "slice-ansi": { "version": "0.0.4", @@ -989,7 +1487,10 @@ "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=" + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.4", @@ -1009,17 +1510,28 @@ "string_decoder": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "requires": { + "safe-buffer": "5.0.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "3.0.0", @@ -1044,12 +1556,25 @@ "sync-request": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-3.0.1.tgz", - "integrity": "sha1-yqEjWq+Im6UBB2oYNMQ2gwqC+3M=" + "integrity": "sha1-yqEjWq+Im6UBB2oYNMQ2gwqC+3M=", + "requires": { + "concat-stream": "1.6.0", + "http-response-object": "1.1.0", + "then-request": "2.2.0" + } }, "table": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.0.0" + }, "dependencies": { "is-fullwidth-code-point": { "version": "2.0.0", @@ -1059,7 +1584,11 @@ "string-width": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", - "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=" + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -1071,7 +1600,15 @@ "then-request": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/then-request/-/then-request-2.2.0.tgz", - "integrity": "sha1-ZnizL6DKIY/laZgbvYhxtZQGDYE=" + "integrity": "sha1-ZnizL6DKIY/laZgbvYhxtZQGDYE=", + "requires": { + "caseless": "0.11.0", + "concat-stream": "1.6.0", + "http-basic": "2.5.1", + "http-response-object": "1.1.0", + "promise": "7.1.1", + "qs": "6.4.0" + } }, "through": { "version": "2.3.8", @@ -1081,7 +1618,10 @@ "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=" + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "3.2.2" + } }, "toml": { "version": "2.3.2", @@ -1096,7 +1636,10 @@ "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=" + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "1.1.2" + } }, "typedarray": { "version": "0.0.6", @@ -1116,7 +1659,10 @@ "user-home": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=" + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "requires": { + "os-homedir": "1.0.2" + } }, "util-deprecate": { "version": "1.0.2", @@ -1126,7 +1672,11 @@ "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=" + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } }, "wordwrap": { "version": "1.0.0", @@ -1141,7 +1691,10 @@ "write": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=" + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "requires": { + "mkdirp": "0.5.1" + } }, "xtend": { "version": "4.0.1",