From 8c2bd93d96b07f0e0e1d412cd6121aeb04b12a79 Mon Sep 17 00:00:00 2001 From: John Datserakis Date: Tue, 29 Aug 2017 00:37:41 -0400 Subject: [PATCH] added complete tests (+17 squashed commits) Squashed commits: [3855b83] testfile [5e30735] testing [f701d81] testing [42bd682] testing [2072fcc] testing [5c4071f] testing [abfc759] testing [845e5d9] testing [9816639] testing [50f755c] testing [c3d4605] testing [fdf8b2a] testing [85ff61f] testing [faf3046] testing [1419cb2] testing [be39a0a] testing [5768bb3] testing --- .travis.yml | 8 - package-lock.json | 1099 +++++------------ package.json | 31 +- readme.md | 8 +- src/controllers/NoteController.js | 5 +- src/controllers/UserActionController.js | 77 +- src/db/db.js | 6 +- .../20170826111515_create_users_table.js | 25 +- ...170826132549_create_refresh_token_table.js | 5 +- src/db/seeds/dev/seed_notes.js | 14 +- src/db/seeds/dev/seed_users.js | 12 +- src/models/Note.js | 8 +- tests/test.js | 251 +++- 13 files changed, 630 insertions(+), 919 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 543a7bb..0000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -sudo: false -node_js: - - "8.1.3" -install: - - npm install -script: - - npm test \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d11ceec..b926628 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,8 +33,7 @@ "abab": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", - "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=", - "dev": true + "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=" }, "abbrev": { "version": "1.1.0", @@ -53,14 +52,12 @@ "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" }, "acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "dev": true, "requires": { "acorn": "4.0.13" } @@ -100,7 +97,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, "requires": { "kind-of": "3.2.2", "longest": "1.0.1", @@ -128,8 +124,7 @@ "ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" }, "ansi-regex": { "version": "2.1.1", @@ -162,7 +157,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true, "requires": { "default-require-extensions": "1.0.0" } @@ -212,8 +206,7 @@ "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, "array-unique": { "version": "0.2.1", @@ -223,13 +216,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "asn1": { "version": "0.2.3", @@ -241,12 +228,6 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" }, - "assertion-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", - "dev": true - }, "ast-types": { "version": "0.9.12", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.12.tgz", @@ -271,7 +252,7 @@ "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.7.tgz", "integrity": "sha512-6Bmzy9dHE1WWZdru7teS6kecmOy42cCzumQOn57vHa/49kjPMExdPLozDvr25J0hbQf5wMwFitJKnO7O3eqh2A==", "requires": { - "semver": "5.3.0", + "semver": "5.4.1", "shimmer": "1.1.0" } }, @@ -299,6 +280,15 @@ "follow-redirects": "1.0.0" } }, + "axios-mock-adapter": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.9.0.tgz", + "integrity": "sha1-Djh2Zvzq8/kSYhCaOVb1iLxq8tE=", + "dev": true, + "requires": { + "deep-equal": "1.0.1" + } + }, "babel-cli": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", @@ -334,7 +324,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, "requires": { "chalk": "1.1.3", "esutils": "2.0.2", @@ -344,14 +333,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -363,8 +350,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -372,7 +358,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "dev": true, "requires": { "babel-code-frame": "6.26.0", "babel-generator": "6.26.0", @@ -395,26 +380,10 @@ "source-map": "0.5.7" }, "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -422,7 +391,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", - "dev": true, "requires": { "babel-messages": "6.23.0", "babel-runtime": "6.26.0", @@ -437,8 +405,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -573,7 +540,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-template": "6.26.0" @@ -583,7 +549,6 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=", - "dev": true, "requires": { "babel-core": "6.26.0", "babel-plugin-istanbul": "4.1.4", @@ -594,7 +559,6 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -612,7 +576,6 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz", "integrity": "sha1-GN3oS/POMp/d8/QQP66SFFbY5Yc=", - "dev": true, "requires": { "find-up": "2.1.0", "istanbul-lib-instrument": "1.7.5", @@ -622,8 +585,7 @@ "babel-plugin-jest-hoist": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz", - "integrity": "sha1-r+3IU70/jcNUjqZx++adA8wsF2c=", - "dev": true + "integrity": "sha1-r+3IU70/jcNUjqZx++adA8wsF2c=" }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", @@ -631,41 +593,18 @@ "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", "dev": true }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true - }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", "dev": true }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, "babel-plugin-syntax-trailing-function-commas": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", "dev": true }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-generators": "6.13.0", - "babel-runtime": "6.26.0" - } - }, "babel-plugin-transform-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", @@ -922,16 +861,6 @@ "babel-runtime": "6.26.0" } }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" - } - }, "babel-plugin-transform-regenerator": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", @@ -955,19 +884,30 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, "requires": { "babel-runtime": "6.26.0", "core-js": "2.5.0", "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } } }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "babel-preset-env": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.0.tgz", + "integrity": "sha512-OVgtQRuOZKckrILgMA5rvctvFZPv72Gua9Rt006AiPoB0DJKGN07UmaQA+qRrYgK71MVct8fFhT0EyNWYorVew==", "dev": true, "requires": { "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-arrow-functions": "6.22.0", "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", "babel-plugin-transform-es2015-block-scoping": "6.26.0", @@ -990,36 +930,25 @@ "babel-plugin-transform-es2015-template-literals": "6.22.0", "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0" + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.4.0", + "invariant": "2.2.2", + "semver": "5.4.1" } }, "babel-preset-jest": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=", - "dev": true, "requires": { "babel-plugin-jest-hoist": "20.0.3" } }, - "babel-preset-stage-3": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "dev": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-generator-functions": "6.24.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-object-rest-spread": "6.26.0" - } - }, "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", @@ -1037,20 +966,12 @@ "requires": { "core-js": "2.5.0", "regenerator-runtime": "0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" - } } }, "babel-template": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-traverse": "6.26.0", @@ -1063,7 +984,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, "requires": { "babel-code-frame": "6.26.0", "babel-messages": "6.23.0", @@ -1074,30 +994,12 @@ "globals": "9.18.0", "invariant": "2.2.2", "lodash": "4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } } }, "babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", @@ -1108,8 +1010,7 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "balanced-match": { "version": "1.0.0", @@ -1122,13 +1023,12 @@ "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" }, "bcrypt": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-1.0.2.tgz", - "integrity": "sha1-0F/F0iMXPg4o7DgcDwDMJf+vJzY=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-1.0.3.tgz", + "integrity": "sha512-pRyDdo73C8Nim3jwFJ7DWe3TZCgwDfWZ6nHS5LSdU77kWbj1frruvdndP02AOavtD4y8v6Fp2dolbHgp4SDrfg==", "requires": { - "bindings": "1.2.1", - "nan": "2.5.0", - "node-pre-gyp": "0.6.32" + "nan": "2.6.2", + "node-pre-gyp": "0.6.36" } }, "bcrypt-pbkdf": { @@ -1150,11 +1050,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=" }, - "bindings": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=" - }, "bl": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", @@ -1235,7 +1130,6 @@ "version": "1.11.2", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", - "dev": true, "requires": { "resolve": "1.1.7" }, @@ -1243,16 +1137,24 @@ "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" } } }, + "browserslist": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.4.0.tgz", + "integrity": "sha512-aM2Gt4x9bVlCUteADBS6JP0F+2tMWKM1jQzUulVROtdFWFIcIVvY76AJbr7GDqy0eDhn+PcnpzzivGxY4qiaKQ==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000718", + "electron-to-chromium": "1.3.18" + } + }, "bser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true, "requires": { "node-int64": "0.4.0" } @@ -1262,11 +1164,6 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" - }, "buildmail": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-4.0.1.tgz", @@ -1285,8 +1182,7 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" }, "bytes": { "version": "2.4.0", @@ -1296,16 +1192,20 @@ "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, "optional": true }, + "caniuse-lite": { + "version": "1.0.30000718", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000718.tgz", + "integrity": "sha1-DdJCkL6xExCy2A9rcKgjwqZab60=", + "dev": true + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -1315,24 +1215,12 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, "optional": true, "requires": { "align-text": "0.1.4", "lazy-cache": "1.0.4" } }, - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", - "dev": true, - "requires": { - "assertion-error": "1.0.2", - "deep-eql": "0.1.3", - "type-detect": "1.0.0" - } - }, "chalk": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", @@ -1367,8 +1255,7 @@ "ci-info": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", - "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", - "dev": true + "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=" }, "cli-table-redemption": { "version": "1.0.1", @@ -1406,7 +1293,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, "optional": true, "requires": { "center-align": "0.1.3", @@ -1418,7 +1304,6 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true, "optional": true } } @@ -1535,8 +1420,7 @@ "content-type-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz", - "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=", - "dev": true + "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=" }, "continuation-local-storage": { "version": "3.2.0", @@ -1550,8 +1434,7 @@ "convert-source-map": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", - "dev": true + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=" }, "cookiejar": { "version": "2.0.6", @@ -1560,12 +1443,12 @@ "dev": true }, "cookies": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.0.tgz", - "integrity": "sha1-C8lh2RDDUlSYD8fJ7/XaEgEbvwA=", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", + "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", "requires": { "depd": "1.1.1", - "keygrip": "1.0.1" + "keygrip": "1.0.2" } }, "core-js": { @@ -1597,14 +1480,12 @@ "cssom": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", - "dev": true + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=" }, "cssstyle": { "version": "0.2.37", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true, "requires": { "cssom": "0.3.2" } @@ -1641,35 +1522,17 @@ "integrity": "sha1-vn32jsJw/Z7HhIK9hb5oyPuPvrw=" }, "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "requires": { - "ms": "0.7.1" + "ms": "2.0.0" } }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "requires": { - "type-detect": "0.1.1" - }, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } - } + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "deep-equal": { "version": "1.0.1", @@ -1690,7 +1553,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true, "requires": { "strip-bom": "2.0.0" } @@ -1743,16 +1605,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, "requires": { "repeating": "2.0.1" } }, "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", - "dev": true + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", + "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==" }, "discontinuous-range": { "version": "1.0.0", @@ -1811,6 +1671,12 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "electron-to-chromium": { + "version": "1.3.18", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.18.tgz", + "integrity": "sha1-PcyZ2j5rZl9qu8ccKK1Ros1zGpw=", + "dev": true + }, "emitter-listener": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.0.1.tgz", @@ -1839,7 +1705,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true, "requires": { "prr": "0.0.0" } @@ -1848,7 +1713,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, "requires": { "is-arrayish": "0.2.1" } @@ -1938,7 +1802,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.0.tgz", "integrity": "sha1-FPdd4/INKG75MwmbLOUKkDWc7xA=", - "dev": true, "requires": { "merge": "1.2.0" } @@ -1999,7 +1862,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true, "requires": { "bser": "2.0.0" } @@ -2024,7 +1886,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, "requires": { "glob": "7.1.2", "minimatch": "3.0.4" @@ -2046,7 +1907,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, "requires": { "locate-path": "2.0.0" } @@ -2078,7 +1938,7 @@ "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", "optional": true, "requires": { - "debug": "2.2.0" + "debug": "2.6.8" } }, "for-in": { @@ -2158,7 +2018,7 @@ "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", "optional": true, "requires": { - "nan": "2.5.0", + "nan": "2.6.2", "node-pre-gyp": "0.6.36" }, "dependencies": { @@ -2945,7 +2805,7 @@ "graceful-fs": "4.1.11", "inherits": "2.0.3", "mkdirp": "0.5.1", - "rimraf": "2.5.4" + "rimraf": "2.6.1" } }, "fstream-ignore": { @@ -3032,8 +2892,7 @@ "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" }, "get-uri": { "version": "2.0.1", @@ -3042,7 +2901,7 @@ "optional": true, "requires": { "data-uri-to-buffer": "1.2.0", - "debug": "2.2.0", + "debug": "2.6.8", "extend": "3.0.1", "file-uri-to-path": "1.0.0", "ftp": "0.3.10", @@ -3122,8 +2981,7 @@ "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" }, "got": { "version": "3.3.1", @@ -3156,23 +3014,15 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, "handlebars": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", - "dev": true, "requires": { "async": "1.5.2", "optimist": "0.6.1", @@ -3183,14 +3033,12 @@ "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, "requires": { "amdefine": "1.0.1" } @@ -3259,7 +3107,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" @@ -3276,14 +3123,12 @@ "hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" }, "html-encoding-sniffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", - "dev": true, "requires": { "whatwg-encoding": "1.0.1" } @@ -3314,7 +3159,7 @@ "integrity": "sha1-zBzjjkU7+YSg93AtLdWcc9CBKEo=", "requires": { "agent-base": "2.1.1", - "debug": "2.2.0", + "debug": "2.6.8", "extend": "3.0.1" } }, @@ -3348,7 +3193,7 @@ "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", "requires": { "agent-base": "2.1.1", - "debug": "2.2.0", + "debug": "2.6.8", "extend": "3.0.1" } }, @@ -3411,15 +3256,14 @@ "integrity": "sha1-HHtTyN1zNe9TTCZI3ij1md8b3Zc=" }, "interpret": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", - "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=" + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", + "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=" }, "invariant": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, "requires": { "loose-envify": "1.3.1" } @@ -3427,8 +3271,7 @@ "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, "ioredis": { "version": "3.1.4", @@ -3437,7 +3280,7 @@ "requires": { "bluebird": "3.5.0", "cluster-key-slot": "1.0.8", - "debug": "2.2.0", + "debug": "2.6.8", "denque": "1.2.2", "flexbuffer": "0.0.6", "lodash.assign": "4.2.0", @@ -3474,8 +3317,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-binary-path": { "version": "1.0.1", @@ -3494,7 +3336,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, "requires": { "builtin-modules": "1.1.1" } @@ -3503,7 +3344,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", - "dev": true, "requires": { "ci-info": "1.0.0" } @@ -3535,7 +3375,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, "requires": { "number-is-nan": "1.0.1" } @@ -3562,9 +3401,9 @@ } }, "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=", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", + "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", "optional": true, "requires": { "generate-function": "2.0.0", @@ -3622,8 +3461,7 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, "is-windows": { "version": "0.2.0", @@ -3662,7 +3500,6 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.13.tgz", "integrity": "sha1-cZf2RBNgDr3+xjR6LcPU4D+X7Vo=", - "dev": true, "requires": { "async": "2.1.5", "fileset": "2.0.3", @@ -3680,14 +3517,12 @@ "istanbul-lib-coverage": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", - "dev": true + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==" }, "istanbul-lib-hook": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", - "dev": true, "requires": { "append-transform": "0.4.0" } @@ -3696,7 +3531,6 @@ "version": "1.7.5", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.5.tgz", "integrity": "sha1-rbWW+PDLi5XnOSBjUaOKWGryGx4=", - "dev": true, "requires": { "babel-generator": "6.26.0", "babel-template": "6.26.0", @@ -3704,14 +3538,13 @@ "babel-types": "6.26.0", "babylon": "6.18.0", "istanbul-lib-coverage": "1.1.1", - "semver": "5.3.0" + "semver": "5.4.1" } }, "istanbul-lib-report": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", - "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", "mkdirp": "0.5.1", @@ -3722,14 +3555,12 @@ "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, "requires": { "has-flag": "1.0.0" } @@ -3740,7 +3571,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", - "dev": true, "requires": { "debug": "2.6.8", "istanbul-lib-coverage": "1.1.1", @@ -3749,35 +3579,10 @@ "source-map": "0.5.7" }, "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -3785,7 +3590,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.2.tgz", "integrity": "sha1-D7Lj9qqZIr085F0F2KtNXo4HvU8=", - "dev": true, "requires": { "handlebars": "4.0.10" } @@ -3795,35 +3599,10 @@ "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=" }, - "jade": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", - "dev": true, - "requires": { - "commander": "0.6.1", - "mkdirp": "0.3.0" - }, - "dependencies": { - "commander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", - "dev": true - }, - "mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", - "dev": true - } - } - }, "jest": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", - "dev": true, "requires": { "jest-cli": "20.0.4" }, @@ -3831,14 +3610,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -3851,7 +3628,6 @@ "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", - "dev": true, "requires": { "ansi-escapes": "1.4.0", "callsites": "2.0.0", @@ -3888,22 +3664,19 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, "jest-changed-files": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", - "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=", - "dev": true + "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=" }, "jest-config": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", "integrity": "sha1-43kwqyIXyRNgXv8T5712PsSPruo=", - "dev": true, "requires": { "chalk": "1.1.3", "glob": "7.1.2", @@ -3920,14 +3693,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -3939,8 +3710,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -3948,7 +3718,6 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-20.0.3.tgz", "integrity": "sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc=", - "dev": true, "requires": { "chalk": "1.1.3", "diff": "3.3.0", @@ -3959,14 +3728,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -3975,31 +3742,22 @@ "supports-color": "2.0.0" } }, - "diff": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", - "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==", - "dev": true - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, "jest-docblock": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", - "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=", - "dev": true + "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=" }, "jest-environment-jsdom": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz", "integrity": "sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk=", - "dev": true, "requires": { "jest-mock": "20.0.3", "jest-util": "20.0.3", @@ -4010,7 +3768,6 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-20.0.3.tgz", "integrity": "sha1-1Ii8RhKvLCRumG6K52caCZFj1AM=", - "dev": true, "requires": { "jest-mock": "20.0.3", "jest-util": "20.0.3" @@ -4020,7 +3777,6 @@ "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.4.tgz", "integrity": "sha1-ZT61XIic48Ah97lGk/IKQVm63wM=", - "dev": true, "requires": { "fb-watchman": "2.0.0", "graceful-fs": "4.1.11", @@ -4034,7 +3790,6 @@ "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz", "integrity": "sha1-/MWxQReA2RHQQpAu8YWehS5g1eE=", - "dev": true, "requires": { "chalk": "1.1.3", "graceful-fs": "4.1.11", @@ -4050,14 +3805,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -4069,8 +3822,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -4078,7 +3830,6 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", "integrity": "sha1-s6a443yld4A7CDKpixZPRLeBVhI=", - "dev": true, "requires": { "chalk": "1.1.3", "pretty-format": "20.0.3" @@ -4087,14 +3838,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -4106,8 +3855,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -4115,7 +3863,6 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-20.0.3.tgz", "integrity": "sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA=", - "dev": true, "requires": { "jest-diff": "20.0.3", "jest-matcher-utils": "20.0.3", @@ -4127,7 +3874,6 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-20.0.3.tgz", "integrity": "sha1-auwoRDBvyw5udNV5bBAG2W/dgxw=", - "dev": true, "requires": { "chalk": "1.1.3", "micromatch": "2.3.11", @@ -4137,14 +3883,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -4156,28 +3900,24 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, "jest-mock": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-20.0.3.tgz", - "integrity": "sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk=", - "dev": true + "integrity": "sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk=" }, "jest-regex-util": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-20.0.3.tgz", - "integrity": "sha1-hburXRM+RGJbGfr4xqpRItCF12I=", - "dev": true + "integrity": "sha1-hburXRM+RGJbGfr4xqpRItCF12I=" }, "jest-resolve": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-20.0.4.tgz", "integrity": "sha1-lEiz6La6/BVHlETGSZBFt//ll6U=", - "dev": true, "requires": { "browser-resolve": "1.11.2", "is-builtin-module": "1.0.0", @@ -4188,7 +3928,6 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz", "integrity": "sha1-bhSntxevDyyzZnxUneQK8Bexcjo=", - "dev": true, "requires": { "jest-regex-util": "20.0.3" } @@ -4197,7 +3936,6 @@ "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-20.0.4.tgz", "integrity": "sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg=", - "dev": true, "requires": { "babel-core": "6.26.0", "babel-jest": "20.0.3", @@ -4219,14 +3957,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -4238,14 +3974,12 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -4253,7 +3987,6 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-20.0.3.tgz", "integrity": "sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY=", - "dev": true, "requires": { "chalk": "1.1.3", "jest-diff": "20.0.3", @@ -4266,14 +3999,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -4285,8 +4016,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -4294,7 +4024,6 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-20.0.3.tgz", "integrity": "sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0=", - "dev": true, "requires": { "chalk": "1.1.3", "graceful-fs": "4.1.11", @@ -4308,14 +4037,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -4327,8 +4054,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -4336,7 +4062,6 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", "integrity": "sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=", - "dev": true, "requires": { "chalk": "1.1.3", "jest-matcher-utils": "20.0.3", @@ -4347,14 +4072,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -4366,8 +4089,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -4392,14 +4114,12 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "js-yaml": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==", - "dev": true, "requires": { "argparse": "1.0.9", "esprima": "4.0.0" @@ -4408,8 +4128,7 @@ "esprima": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" } } }, @@ -4423,7 +4142,6 @@ "version": "9.12.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", - "dev": true, "requires": { "abab": "1.0.3", "acorn": "4.0.13", @@ -4449,8 +4167,7 @@ "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" }, "json-schema": { "version": "0.2.3", @@ -4473,8 +4190,7 @@ "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" }, "jsonfile": { "version": "3.0.1", @@ -4523,11 +4239,6 @@ "topo": "1.1.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "topo": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", @@ -4583,9 +4294,9 @@ "integrity": "sha1-cWCpTy6uYzQ20s746t0M4jI4Z3k=" }, "keygrip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.1.tgz", - "integrity": "sha1-sC+kgW7vIajEs1yp5Skh/8iaMOk=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha1-rTKXxVcGneqLz+ek+kkbdcXd65E=" }, "kind-of": { "version": "3.2.2", @@ -4604,7 +4315,7 @@ "bluebird": "3.5.0", "chalk": "1.1.3", "commander": "2.11.0", - "debug": "2.2.0", + "debug": "2.6.8", "generic-pool": "2.5.4", "inherits": "2.0.3", "interpret": "0.6.6", @@ -4637,11 +4348,6 @@ "supports-color": "2.0.0" } }, - "interpret": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", - "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=" - }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -4683,8 +4389,8 @@ "accepts": "1.3.4", "content-disposition": "0.5.2", "content-type": "1.0.2", - "cookies": "0.7.0", - "debug": "2.2.0", + "cookies": "0.7.1", + "debug": "2.6.8", "delegates": "1.0.0", "depd": "1.1.1", "destroy": "1.0.4", @@ -4757,10 +4463,17 @@ "resolved": "https://registry.npmjs.org/koa-ratelimit/-/koa-ratelimit-4.0.0.tgz", "integrity": "sha1-wSbm9q44qqL6EsYvSvd1kVdZLzw=", "requires": { - "debug": "2.2.0", - "ms": "0.7.1", + "debug": "2.6.8", + "ms": "0.7.3", "ratelimiter": "3.0.3", "thenify": "3.3.0" + }, + "dependencies": { + "ms": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", + "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=" + } } }, "koa-router": { @@ -4768,7 +4481,7 @@ "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-7.2.1.tgz", "integrity": "sha1-tApKs8attLQIld69AKnGQDBOMDk=", "requires": { - "debug": "2.2.0", + "debug": "2.6.8", "http-errors": "1.6.2", "koa-compose": "3.2.1", "methods": "1.1.2", @@ -4808,14 +4521,12 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, "optional": true }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, "requires": { "invert-kv": "1.0.0" } @@ -4823,8 +4534,7 @@ "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" }, "levn": { "version": "0.3.0", @@ -4878,7 +4588,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, "requires": { "graceful-fs": "4.1.11", "parse-json": "2.2.0", @@ -4891,7 +4600,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, "requires": { "p-locate": "2.0.0", "path-exists": "3.0.0" @@ -5101,24 +4809,9 @@ "mailgun-js": "0.7.15", "nodemailer": "2.7.2", "redis": "2.8.0", - "semver": "5.3.0", + "semver": "5.4.1", "slack-node": "0.2.0", "streamroller": "0.5.2" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } } }, "loggly": { @@ -5176,7 +4869,7 @@ "requires": { "chalk": "1.1.3", "commander": "2.11.0", - "is-my-json-valid": "2.16.0", + "is-my-json-valid": "2.16.1", "pinkie-promise": "2.0.1" } }, @@ -5238,14 +4931,12 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, "requires": { "js-tokens": "3.0.2" } @@ -5259,7 +4950,8 @@ "lru-cache": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", - "integrity": "sha1-5W1jVBSO3o13B7WNFDIg/QjfD9U=" + "integrity": "sha1-5W1jVBSO3o13B7WNFDIg/QjfD9U=", + "optional": true }, "mailcomposer": { "version": "4.0.1", @@ -5286,13 +4978,29 @@ "proxy-agent": "2.0.0", "q": "1.4.1", "tsscmp": "1.0.5" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "optional": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "optional": true + } } }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, "requires": { "tmpl": "1.0.4" } @@ -5311,8 +5019,7 @@ "merge": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", - "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", - "dev": true + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=" }, "methods": { "version": "1.1.2", @@ -5379,64 +5086,6 @@ "minimist": "0.0.8" } }, - "mocha": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", - "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", - "dev": true, - "requires": { - "commander": "2.3.0", - "debug": "2.2.0", - "diff": "1.4.0", - "escape-string-regexp": "1.0.2", - "glob": "3.2.11", - "growl": "1.9.2", - "jade": "0.26.3", - "mkdirp": "0.5.1", - "supports-color": "1.2.0", - "to-iso-string": "0.0.2" - }, - "dependencies": { - "commander": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", - "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", - "dev": true - }, - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimatch": "0.3.0" - } - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2.6.5", - "sigmund": "1.0.1" - } - }, - "supports-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", - "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", - "dev": true - } - } - }, "moment": { "version": "2.18.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", @@ -5451,9 +5100,9 @@ } }, "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "mute-stream": { "version": "0.0.7", @@ -5472,22 +5121,21 @@ } }, "nan": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.0.tgz", - "integrity": "sha1-qo8eNFMdgH6eJ3VbI0tKbsDBUqg=" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, "needle": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/needle/-/needle-1.6.0.tgz", "integrity": "sha1-9SpYWJchIWGOAC+OY4TK2sItYk8=", "requires": { - "debug": "2.2.0", + "debug": "2.6.8", "iconv-lite": "0.4.13" } }, @@ -5514,35 +5162,33 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" }, "node-notifier": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", - "dev": true, "requires": { "growly": "1.3.0", - "semver": "5.3.0", + "semver": "5.4.1", "shellwords": "0.1.1", "which": "1.3.0" } }, "node-pre-gyp": { - "version": "0.6.32", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz", - "integrity": "sha1-/EUrN25zGbPSVfXzSFPvb9j+H9U=", + "version": "0.6.36", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", + "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", "requires": { "mkdirp": "0.5.1", - "nopt": "3.0.6", + "nopt": "4.0.1", "npmlog": "4.1.2", - "rc": "1.1.7", + "rc": "1.2.1", "request": "2.81.0", - "rimraf": "2.5.4", - "semver": "5.3.0", + "rimraf": "2.6.1", + "semver": "5.4.1", "tar": "2.2.1", - "tar-pack": "3.3.0" + "tar-pack": "3.4.0" } }, "nodemailer": { @@ -5635,7 +5281,7 @@ "dev": true, "requires": { "chokidar": "1.7.0", - "debug": "2.2.0", + "debug": "2.6.8", "es6-promise": "3.3.1", "ignore-by-default": "1.0.1", "lodash.defaults": "3.1.2", @@ -5681,22 +5327,22 @@ } }, "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { - "abbrev": "1.1.0" + "abbrev": "1.1.0", + "osenv": "0.1.4" } }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, "requires": { "hosted-git-info": "2.5.0", "is-builtin-module": "1.0.0", - "semver": "5.3.0", + "semver": "5.4.1", "validate-npm-package-license": "3.0.1" } }, @@ -8718,8 +8364,7 @@ "nwmatcher": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz", - "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=", - "dev": true + "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=" }, "oauth-sign": { "version": "0.8.2", @@ -8765,7 +8410,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, "requires": { "minimist": "0.0.8", "wordwrap": "0.0.3" @@ -8774,8 +8418,7 @@ "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" } } }, @@ -8801,7 +8444,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, "requires": { "lcid": "1.0.0" } @@ -8809,14 +8451,12 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true, "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" @@ -8836,14 +8476,12 @@ "p-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" }, "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, "requires": { "p-limit": "1.1.0" } @@ -8851,8 +8489,7 @@ "p-map": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.1.1.tgz", - "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=", - "dev": true + "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=" }, "pac-proxy-agent": { "version": "1.1.0", @@ -8861,7 +8498,7 @@ "optional": true, "requires": { "agent-base": "2.1.1", - "debug": "2.2.0", + "debug": "2.6.8", "extend": "3.0.1", "get-uri": "2.0.1", "http-proxy-agent": "1.0.0", @@ -8917,7 +8554,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, "requires": { "error-ex": "1.3.1" } @@ -8930,8 +8566,7 @@ "parse5": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", - "dev": true + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=" }, "parseurl": { "version": "1.3.1", @@ -8941,8 +8576,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", @@ -8990,7 +8624,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, "requires": { "graceful-fs": "4.1.11", "pify": "2.3.0", @@ -9024,8 +8657,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, "pinkie": { "version": "2.0.4", @@ -9063,11 +8695,11 @@ "pidusage": "1.1.6", "pm2-axon": "3.0.2", "pm2-axon-rpc": "0.4.5", - "pm2-deploy": "0.3.6", + "pm2-deploy": "0.3.7", "pm2-multimeter": "0.1.2", "pmx": "1.2.0", "promptly": "2.2.0", - "semver": "5.3.0", + "semver": "5.4.1", "shelljs": "0.7.8", "source-map-support": "0.4.16", "sprintf-js": "1.1.1", @@ -9100,19 +8732,6 @@ "supports-color": "2.0.0" } }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -9129,6 +8748,21 @@ "amp-message": "0.1.2", "debug": "2.2.0", "escape-regexp": "0.0.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } } }, "pm2-axon-rpc": { @@ -9136,7 +8770,7 @@ "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.4.5.tgz", "integrity": "sha1-+2LppT8+K3vtGv4W47DRsG/oumk=", "requires": { - "debug": "2.2.0", + "debug": "2.6.8", "fclone": "1.0.8" }, "dependencies": { @@ -9148,9 +8782,9 @@ } }, "pm2-deploy": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-0.3.6.tgz", - "integrity": "sha512-ja+vsNELAwBTeTg+kqArzXaGsgfJjgckiBTVncKAZL5P8PRpF0FOXWruc/JABxbqAaS2NSdKJOGZi1QYIVxuIA==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-0.3.7.tgz", + "integrity": "sha512-ZIYFyAO5SZg5q8lAZnkDbcxw453y9DA8csgw+j9wSkwLmwdMO8tN1sPhyVlv62nspcc9mNzgoa303fo0wDfg8w==", "requires": { "async": "1.5.2", "tv4": "1.3.0" @@ -9179,21 +8813,6 @@ "debug": "2.6.8", "json-stringify-safe": "5.0.1", "vxx": "1.2.2" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } } }, "prelude-ls": { @@ -9213,16 +8832,15 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.5.3.tgz", - "integrity": "sha1-WdrcaDNF7GuI+IuU7Urn4do5S/4=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.6.1.tgz", + "integrity": "sha512-f85qBoQiqiFM/sCmJaN4Lagj9bqMcv38vCftqp4GfVessAqq3Ns6g+3gd8UXReStLLE/DGEdwiZXoFKxphKqwg==", "dev": true }, "pretty-format": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", - "dev": true, "requires": { "ansi-regex": "2.1.1", "ansi-styles": "3.2.0" @@ -9231,22 +8849,13 @@ "private": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", - "dev": true + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=" }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, - "promise": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz", - "integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=", - "requires": { - "asap": "2.0.6" - } - }, "promptly": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", @@ -9262,7 +8871,7 @@ "optional": true, "requires": { "agent-base": "2.1.1", - "debug": "2.2.0", + "debug": "2.6.8", "extend": "3.0.1", "http-proxy-agent": "1.0.0", "https-proxy-agent": "1.0.0", @@ -9274,8 +8883,7 @@ "prr": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=" }, "ps-tree": { "version": "1.1.0", @@ -9364,9 +8972,9 @@ } }, "rc": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.7.tgz", - "integrity": "sha1-xepWS7B6/5/TpbMukGwdOmWUD+o=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "requires": { "deep-extend": "0.4.2", "ini": "1.3.4", @@ -9403,7 +9011,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, "requires": { "load-json-file": "1.1.0", "normalize-package-data": "2.4.0", @@ -9414,7 +9021,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, "requires": { "find-up": "1.1.2", "read-pkg": "1.1.0" @@ -9424,7 +9030,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, "requires": { "path-exists": "2.1.0", "pinkie-promise": "2.0.1" @@ -9434,7 +9039,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, "requires": { "pinkie-promise": "2.0.1" } @@ -9508,9 +9112,9 @@ "dev": true }, "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" }, "regenerator-transform": { "version": "0.10.1", @@ -9549,7 +9153,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.1.7" + "rc": "1.2.1" } }, "regjsgen": { @@ -9594,7 +9198,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, "requires": { "is-finite": "1.0.2" } @@ -9643,14 +9246,12 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, "resolve": { "version": "1.4.0", @@ -9678,16 +9279,15 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, "optional": true, "requires": { "align-text": "0.1.4" } }, "rimraf": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "requires": { "glob": "7.1.2" } @@ -9701,7 +9301,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/sane/-/sane-1.6.0.tgz", "integrity": "sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U=", - "dev": true, "requires": { "anymatch": "1.3.2", "exec-sh": "0.2.0", @@ -9716,7 +9315,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", - "dev": true, "requires": { "node-int64": "0.4.0" } @@ -9725,7 +9323,6 @@ "version": "1.9.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", - "dev": true, "requires": { "bser": "1.0.2" } @@ -9733,21 +9330,19 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" }, "semver-diff": { "version": "2.1.0", @@ -9755,7 +9350,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.3.0" + "semver": "5.4.1" } }, "set-blocking": { @@ -9781,25 +9376,25 @@ "glob": "7.1.2", "interpret": "1.0.3", "rechoir": "0.6.2" + }, + "dependencies": { + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=" + } } }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" }, "shimmer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", "integrity": "sha1-l9c3cTf/u6tCVSLkKf4KqJpIizU=" }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -9817,8 +9412,7 @@ "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, "slide": { "version": "1.1.6", @@ -9902,7 +9496,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, "requires": { "spdx-license-ids": "1.2.2" } @@ -9910,14 +9503,12 @@ "spdx-expression-parse": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" }, "spdx-license-ids": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" }, "split": { "version": "0.3.3", @@ -9989,21 +9580,6 @@ "debug": "2.6.8", "mkdirp": "0.5.1", "readable-stream": "2.3.3" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } } }, "string_decoder": { @@ -10018,7 +9594,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "dev": true, "requires": { "strip-ansi": "3.0.1" } @@ -10050,7 +9625,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, "requires": { "is-utf8": "0.2.1" } @@ -10068,7 +9642,7 @@ "requires": { "component-emitter": "1.2.1", "cookiejar": "2.0.6", - "debug": "2.2.0", + "debug": "2.6.8", "extend": "3.0.0", "form-data": "1.0.0-rc3", "formidable": "1.0.17", @@ -10155,8 +9729,7 @@ "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" }, "tar": { "version": "2.2.1", @@ -10169,54 +9742,24 @@ } }, "tar-pack": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.3.0.tgz", - "integrity": "sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", "requires": { - "debug": "2.2.0", + "debug": "2.6.8", "fstream": "1.0.11", "fstream-ignore": "1.0.5", - "once": "1.3.3", - "readable-stream": "2.1.5", - "rimraf": "2.5.4", + "once": "1.4.0", + "readable-stream": "2.3.3", + "rimraf": "2.6.1", "tar": "2.2.1", "uid-number": "0.0.6" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "requires": { - "wrappy": "1.0.2" - } - }, - "readable-stream": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", - "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", - "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": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } } }, "test-exclude": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", - "dev": true, "requires": { "arrify": "1.0.1", "micromatch": "2.3.11", @@ -10236,8 +9779,7 @@ "throat": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", - "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==", - "dev": true + "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==" }, "through": { "version": "2.3.8", @@ -10274,20 +9816,12 @@ "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "to-iso-string": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", - "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", - "dev": true + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" }, "topo": { "version": "2.0.2", @@ -10335,14 +9869,12 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, "tsscmp": { "version": "1.0.5", @@ -10377,12 +9909,6 @@ "prelude-ls": "1.1.2" } }, - "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", - "dev": true - }, "type-is": { "version": "1.6.15", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", @@ -10396,7 +9922,6 @@ "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, "optional": true, "requires": { "source-map": "0.5.7", @@ -10408,14 +9933,12 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, "optional": true }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, "optional": true, "requires": { "camelcase": "1.2.1", @@ -10430,7 +9953,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, "optional": true }, "uid-number": { @@ -10537,7 +10059,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true, "requires": { "spdx-correct": "1.0.2", "spdx-expression-parse": "1.0.4" @@ -10593,31 +10114,15 @@ "lodash.isequal": "4.5.0", "lodash.merge": "4.6.0", "methods": "1.1.2", - "semver": "5.3.0", + "semver": "5.4.1", "shimmer": "1.1.0", "uuid": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } } }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, "requires": { "makeerror": "1.0.11" } @@ -10625,20 +10130,17 @@ "watch": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", - "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=", - "dev": true + "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=" }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" }, "whatwg-encoding": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=", - "dev": true, "requires": { "iconv-lite": "0.4.13" } @@ -10647,7 +10149,6 @@ "version": "4.8.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", - "dev": true, "requires": { "tr46": "0.0.3", "webidl-conversions": "3.0.1" @@ -10656,8 +10157,7 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" } } }, @@ -10678,8 +10178,7 @@ "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, "wide-align": { "version": "1.1.2", @@ -10693,7 +10192,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, "optional": true }, "wordwrap": { @@ -10705,7 +10203,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.0.tgz", "integrity": "sha512-DHRiUggxtbruaTwnLDm2/BRDKZIoOYvrgYUj5Bam4fU6Gtvc0FaEyoswFPBjMXAweGW2H4BDNIpy//1yXXuaqQ==", - "dev": true, "requires": { "errno": "0.1.4", "xtend": "4.0.1" @@ -10715,7 +10212,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, "requires": { "string-width": "1.0.2", "strip-ansi": "3.0.1" @@ -10749,8 +10245,7 @@ "xml-name-validator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "dev": true + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=" }, "xregexp": { "version": "2.0.0", @@ -10766,8 +10261,7 @@ "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, "yamljs": { "version": "0.3.0", @@ -10782,7 +10276,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, "requires": { "camelcase": "3.0.0", "cliui": "3.2.0", @@ -10802,14 +10295,12 @@ "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, "requires": { "string-width": "1.0.2", "strip-ansi": "3.0.1", @@ -10822,7 +10313,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, "requires": { "camelcase": "3.0.0" }, @@ -10830,8 +10320,7 @@ "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" } } } diff --git a/package.json b/package.json index b6750a4..86a2cf4 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,14 @@ { "name": "koa-vue-notes-api", - "version": "1.2.2", + "version": "1.2.3", "description": "A SPA using Koa as the backend and Vue as the frontend.", "author": "John Datserakis", "private": false, "scripts": { "watch": "NODE_ENV=development nodemon app.js --exec", - "test": "NODE_ENV=testing jest", + "test": "NODE_ENV=testing jest --forceExit", "build": "NODE_ENV=production babel src -d build && npm run pretty", - "pretty": "prettier --write --print-width 80 --single-quote --trailing-comma es5 --tab-width 4 --no-semi 'src/**/*.js'", + "pretty": "prettier --write --print-width 80 --single-quote --trailing-comma es5 --tab-width 4 --no-semi 'src/**/*.js' 'tests/**/*.js'", "start-production": "NODE_ENV=production pm2 start ecosystem.json", "clean": "npm cache clean --force" }, @@ -16,7 +16,6 @@ "homepage": "https://github.com/johndatserakis/koa-vue-notes-api#readme", "dependencies": { "@sendgrid/mail": "6.0.0", - "babel-polyfill": "^6.5.0", "bcrypt": "^1.0.2", "date-fns": "^1.28.5", "dotenv": "^4.0.0", @@ -24,6 +23,7 @@ "fs-extra": "^4.0.0", "install": "^0.10.1", "ioredis": "^3.1.1", + "jest": "^20.0.4", "joi": "^10.6.0", "jsonwebtoken": "^7.4.1", "kcors": "^2.0.0", @@ -38,26 +38,31 @@ "mysql": "^2.14.1", "npm": "^5.3.0", "pm2": "^2.6.1", - "promise": "^8.0.1", "randexp": "^0.4.5" }, "devDependencies": { + "axios-mock-adapter": "^1.9.0", "babel-cli": "^6.5.1", - "babel-jest": "^20.0.3", - "babel-preset-es2015": "^6.5.0", - "babel-preset-stage-3": "^6.5.0", + "babel-polyfill": "^6.5.0", + "babel-preset-env": "^1.6.0", "babel-register": "^6.9.0", - "chai": "^3.5.0", - "jest": "^20.0.4", - "mocha": "^2.4.5", "nodemon": "^1.9.2", "prettier": "^1.5.3", "supertest": "^1.2.0" }, "babel": { "presets": [ - "es2015", - "stage-3" + [ + "env", + { + "targets": { + "browsers": [ + "last 2 versions", + "safari >= 7" + ] + } + } + ] ] }, "keywords": [ diff --git a/readme.md b/readme.md index 12ee487..d12e0db 100644 --- a/readme.md +++ b/readme.md @@ -30,6 +30,7 @@ This is a simple SPA built using [Koa](http://koajs.com/) (2.3) as the backend a - PM2 - MySQL - Knex with migrations and seeds +- Jest - Faker - log4js - And more... @@ -52,6 +53,9 @@ npm run start-production # run prettier on the project npm run pretty +# run tests +npm run test with jest + # knex migration examples # (from command line in root directory with knex installed globally) # (*make* commands are just here to show syntax) @@ -133,9 +137,9 @@ Static files - just used for the favicon. index.js isn't a folder - it's the brain of the app. Here you'll see we are attaching a bunch of middleware to our Koa instance. Very slick and straight-forward. -## Todo +### Testing -- Finish writing all the tests +This project uses Jest for testing. Bascially, each API endpoint is tested with working request data to confirm the server behaves correctly when spoken to. Each time the tests are run the migrations get kicked into gear. After the tests are complete the testing database rolls-back - ready for the next test. ## Hit Me Up diff --git a/src/controllers/NoteController.js b/src/controllers/NoteController.js index 507aca0..eb96264 100644 --- a/src/controllers/NoteController.js +++ b/src/controllers/NoteController.js @@ -6,7 +6,10 @@ import { Note } from '../models/Note' const noteSchema = joi.object({ id: joi.number().integer(), - userId: joi.number().integer().required(), + userId: joi + .number() + .integer() + .required(), title: joi.string().required(), content: joi.string().required(), ipAddress: joi.string(), diff --git a/src/controllers/UserActionController.js b/src/controllers/UserActionController.js index 3ec054c..be69deb 100644 --- a/src/controllers/UserActionController.js +++ b/src/controllers/UserActionController.js @@ -12,16 +12,45 @@ import dateCompareAsc from 'date-fns/compare_asc' sgMail.setApiKey(process.env.SENDGRID_API_KEY) const userSchemaSignup = joi.object({ - firstName: joi.string().min(1).max(25).alphanum().required(), - lastName: joi.string().min(1).max(25).alphanum().required(), - username: joi.string().min(3).max(100).regex(/[a-zA-Z0-9@]/).required(), - email: joi.string().email().required(), - password: joi.string().min(8).max(35).required(), + firstName: joi + .string() + .min(1) + .max(25) + .alphanum() + .required(), + lastName: joi + .string() + .min(1) + .max(25) + .alphanum() + .required(), + username: joi + .string() + .min(3) + .max(100) + .regex(/[a-zA-Z0-9@]/) + .required(), + email: joi + .string() + .email() + .required(), + password: joi + .string() + .min(8) + .max(35) + .required(), }) const userSchemaResetPassword = joi.object({ - email: joi.string().email().required(), - password: joi.string().min(8).max(35).required(), + email: joi + .string() + .email() + .required(), + password: joi + .string() + .min(8) + .max(35) + .required(), passwordResetToken: joi.string().required(), }) @@ -76,11 +105,16 @@ class UserController { //Ok, at this point we can sign them up. try { - var [result] = await db('users').insert(request).returning('id') + var [result] = await db('users') + .insert(request) + .returning('id') //Let's send a welcome email. if (process.env.NODE_ENV !== 'testing') { - let email = await fse.readFile('./src/email/welcome.html', 'utf8') + let email = await fse.readFile( + './src/email/welcome.html', + 'utf8' + ) const emailData = { to: request.email, from: process.env.APP_EMAIL, @@ -158,7 +192,9 @@ class UserController { //Update their login count try { - await db('users').increment('loginCount').where({ id: userData.id }) + await db('users') + .increment('loginCount') + .where({ id: userData.id }) } catch (error) { ctx.throw(400, 'INVALID_DATA') } @@ -181,8 +217,8 @@ class UserController { ctx.throw(401, 'NO_REFRESH_TOKEN') //Let's find that user and refreshToken in the refreshToken table - const [refreshTokenDatabaseData] = await db('users') - .select('username', 'refreshToken, expiration') + const [refreshTokenDatabaseData] = await db('refresh_tokens') + .select('username', 'refreshToken', 'expiration') .where({ username: request.username, refreshToken: request.refreshToken, @@ -201,21 +237,30 @@ class UserController { ctx.throw(400, 'REFRESH_TOKEN_EXPIRED') } + // console.log(refreshTokenDatabaseData) + //Ok, everthing checked out. So let's invalidate the refresh token they just confirmed, and get them hooked up with a new one. try { - await db('users') + await db('refresh_tokens') .update({ isValid: false, updatedAt: dateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss'), }) .where({ refreshToken: refreshTokenDatabaseData.refreshToken }) } catch (error) { - ctx.throw(400, 'INVALID_DATA') + ctx.throw(400, 'INVALID_DATA1') + } + + const [userData] = await db('users') + .select('id', 'token', 'username', 'email', 'isAdmin') + .where({ username: request.username }) + if (!userData) { + ctx.throw(401, 'INVALID_REFRESH_TOKEN') } //Generate the refreshToken data let refreshTokenData = { - username: userData.username, + username: request.username, refreshToken: new rand(/[a-zA-Z0-9_-]{64,64}/).gen(), info: ctx.userAgent.os + @@ -263,11 +308,9 @@ class UserController { async invalidateRefreshToken(ctx) { const request = ctx.request.body - console.log(request) if (!request.refreshToken) { ctx.throw(404, 'INVALID_DATA') } - console.log(ctx.state.user[0]) try { await db('refresh_tokens') .update({ diff --git a/src/db/db.js b/src/db/db.js index 517a990..4e6447a 100644 --- a/src/db/db.js +++ b/src/db/db.js @@ -1,4 +1,4 @@ -var environment = process.env.NODE_ENV || 'development'; -var config = require('../../knexfile.js')[environment]; +var environment = process.env.NODE_ENV || 'development' +var config = require('../../knexfile.js')[environment] -module.exports = require('knex')(config); \ No newline at end of file +module.exports = require('knex')(config) diff --git a/src/db/migrations/20170826111515_create_users_table.js b/src/db/migrations/20170826111515_create_users_table.js index c29d5b5..22a571a 100644 --- a/src/db/migrations/20170826111515_create_users_table.js +++ b/src/db/migrations/20170826111515_create_users_table.js @@ -4,14 +4,29 @@ exports.up = function(knex, Promise) { table.string('token').notNullable() table.string('firstName').notNullable() table.string('lastName').notNullable() - table.string('username').notNullable().unique() - table.string('email').notNullable().unique() + table + .string('username') + .notNullable() + .unique() + table + .string('email') + .notNullable() + .unique() table.string('password').notNullable() table.string('passwordResetToken') table.timestamp('passwordResetExpiration').nullable() - table.boolean('sendPromotionalEmails').defaultTo(false).notNullable() - table.boolean('isAdmin').defaultTo(false).notNullable() - table.boolean('isDeleted').defaultTo(false).notNullable() + table + .boolean('sendPromotionalEmails') + .defaultTo(false) + .notNullable() + table + .boolean('isAdmin') + .defaultTo(false) + .notNullable() + table + .boolean('isDeleted') + .defaultTo(false) + .notNullable() table.integer('loginCount').defaultTo(0) table.string('ipAddress') table.timestamp('updatedAt').nullable() diff --git a/src/db/migrations/20170826132549_create_refresh_token_table.js b/src/db/migrations/20170826132549_create_refresh_token_table.js index 22f681e..bb3ef11 100644 --- a/src/db/migrations/20170826132549_create_refresh_token_table.js +++ b/src/db/migrations/20170826132549_create_refresh_token_table.js @@ -4,7 +4,10 @@ exports.up = function(knex, Promise) { table.string('username').notNullable() table.string('refreshToken').notNullable() table.string('info') - table.boolean('isValid').defaultTo(false).notNullable() + table + .boolean('isValid') + .defaultTo(false) + .notNullable() table.timestamp('expiration').nullable() table.string('ipAddress') table.timestamp('updatedAt').nullable() diff --git a/src/db/seeds/dev/seed_notes.js b/src/db/seeds/dev/seed_notes.js index c94ae7f..4446064 100644 --- a/src/db/seeds/dev/seed_notes.js +++ b/src/db/seeds/dev/seed_notes.js @@ -1,14 +1,13 @@ -const faker = require('faker'); +const faker = require('faker') exports.seed = async function(knex, Promise) { - //Make 100 notes for 10 different users - let seedData = []; + let seedData = [] for (let i = 0; i < 100; i++) { let testNote = { - userId: faker.random.number({min: 1, max: 5}), + userId: faker.random.number({ min: 1, max: 5 }), title: faker.lorem.sentence(), - content: faker.lorem.sentences(Math.floor(Math.random() * 10) + 1) + content: faker.lorem.sentences(Math.floor(Math.random() * 10) + 1), } seedData.push(testNote) } @@ -17,6 +16,5 @@ exports.seed = async function(knex, Promise) { await knex('notes').truncate() //Insert users - await knex('notes').insert(seedData); - -}; + await knex('notes').insert(seedData) +} diff --git a/src/db/seeds/dev/seed_users.js b/src/db/seeds/dev/seed_users.js index f56d926..5b63a9a 100644 --- a/src/db/seeds/dev/seed_users.js +++ b/src/db/seeds/dev/seed_users.js @@ -1,12 +1,11 @@ -const faker = require('faker'); -const bcrypt = require('bcrypt'); +const faker = require('faker') +const bcrypt = require('bcrypt') exports.seed = async function(knex, Promise) { - //Make 10 users using faker. Note: we're also bcrypting //the passwords to make it exactly like the real app. All their //passwords will be 'secret' - let seedData = []; + let seedData = [] for (let i = 0; i < 5; i++) { let password = 'secret' try { @@ -30,6 +29,5 @@ exports.seed = async function(knex, Promise) { await knex('users').truncate() //Insert users - await knex('users').insert(seedData); - -}; + await knex('users').insert(seedData) +} diff --git a/src/models/Note.js b/src/models/Note.js index 84e8ee0..ee67f10 100644 --- a/src/models/Note.js +++ b/src/models/Note.js @@ -55,7 +55,9 @@ class Note { async save(request) { try { - return await db('notes').update(this).where({ id: this.id }) + return await db('notes') + .update(this) + .where({ id: this.id }) } catch (error) { console.log(error) throw new Error('ERROR') @@ -64,7 +66,9 @@ class Note { async destroy(request) { try { - return await db('notes').delete().where({ id: this.id }) + return await db('notes') + .delete() + .where({ id: this.id }) } catch (error) { console.log(error) throw new Error('ERROR') diff --git a/tests/test.js b/tests/test.js index 95f0e0a..f0f77b5 100644 --- a/tests/test.js +++ b/tests/test.js @@ -1,5 +1,5 @@ //This starts the app up -import {server} from '../app' +import { server } from '../app' //Set up axios a little bit import axios from 'axios' @@ -9,55 +9,212 @@ const request = axios.create({ baseURL: url }) //Grab the db variable import db from '../src/db/db' -//Before all promosie fix for async/await Jest -//https://github.com/facebook/jest/issues/1760 -// beforeAll(() => { -// global.Promise = require.requireActual('promise'); -// }); +beforeAll(async () => { + //As the tests start rollback and migrate our tables + await db.migrate.rollback() + await db.migrate.latest() +}) -//After all the tests are done we're going to close our server -//and rollback our database. -// afterAll(async () => { -// await db.migrate.rollback() +afterAll(async () => { + //After all the tests are done we're going to close our server + //and rollback our database. + await db.migrate.rollback() -// //This closes the app but it doesn't stop the tests in -// //Jest when done - that's why we have to --forceExit -// //when running Jest for now. -// return server.close() -// }); + //This closes the app but it doesn't stop the tests in + //Jest when done - that's why we have to --forceExit + //when running Jest for now. + return server.close() +}) -describe('general actions', async () => { +///////////// +// General // +///////////// + +//Variables for testing that get populated from different calls +let accessToken +let refreshToken +let passwordResetToken + +describe('general actions', () => { it('returns homepage', async () => { expect.assertions(1) const response = await request.get('/') - return expect(response.status).toBe(200) - }); -}); - -// describe('user account actions', () => { -// beforeAll(async () => { -// await db.migrate.rollback() -// await db.migrate.latest() -// }); - -// it('signs up a user', async () => { -// expect.assertions(1) -// const response = await request.post('/api/v1/user/signup', { -// "firstName": "TestFirstName", -// "lastName": "TestLastName", -// "username": "TestUsername", -// "email": "TestEmail@example.com", -// "password": "TestPassword" -// }) -// expect(response.status).toBe(200) -// }); - -// it('authenticates a user', async () => { -// expect.assertions(1) -// const response = await request.post('/api/v1/user/authenticate', { -// "username": "TestUsername", -// "password": "TestPassword" -// }) -// expect(response.status).toBe(200) -// }); -// }) \ No newline at end of file + expect(response.status).toBe(200) + }) +}) + +////////// +// User // +////////// + +describe('user account actions', () => { + it('signs up a user', async () => { + expect.assertions(1) + + const response = await request.post('/api/v1/user/signup', { + firstName: 'TestFirstName', + lastName: 'TestLastName', + username: 'TestUsername', + email: 'TestEmail@example.com', + password: 'TestPassword', + }) + expect(response.status).toBe(200) + }) + + it('authenticates a user', async () => { + expect.assertions(3) + + const response = await request.post('/api/v1/user/authenticate', { + username: 'TestUsername', + password: 'TestPassword', + }) + + expect(response.status).toBe(200) + expect(response.data.accessToken).toBeDefined() + expect(response.data.refreshToken).toBeDefined() + + //Let's store the returned access and refresh tokens for the + //upcoming tests. Also we'll set the Auth on the axios + //instance for testing. + accessToken = response.data.accessToken + refreshToken = response.data.refreshToken + axios.defaults.headers.common['Authorization'] = 'Bearer ' + accessToken + }) + + it("refresh user's accessToken", async () => { + expect.assertions(3) + + const response = await request.post('/api/v1/user/refreshAccessToken', { + username: 'TestUsername', + refreshToken: refreshToken, + }) + expect(response.status).toBe(200) + expect(response.data.accessToken).toBeDefined() + expect(response.data.refreshToken).toBeDefined() + }) + + it("invalidate all the user's refreshTokens", async () => { + expect.assertions(1) + + const response = await request.post( + '/api/v1/user/invalidateAllRefreshTokens', + { + username: 'TestUsername', + } + ) + expect(response.status).toBe(200) + }) + + it('invalidate specific refreshToken', async () => { + expect.assertions(1) + + const response = await request.post( + '/api/v1/user/invalidateRefreshToken', + { + refreshToken: refreshToken, + } + ) + expect(response.status).toBe(200) + }) + + it("forgot user's password", async () => { + expect.assertions(2) + + const response = await request.post('/api/v1/user/forgot', { + email: 'TestEmail@example.com', + url: 'http://koa-vue-notes-api.com/user/reset', + type: 'web', + }) + expect(response.status).toBe(200) + expect(response.data.passwordResetToken).toBeDefined() + + //Store password reset token + passwordResetToken = response.data.passwordResetToken + }) + + it('checks password reset token', async () => { + expect.assertions(1) + + const response = await request.post( + '/api/v1/user/checkPasswordResetToken', + { + passwordResetToken: passwordResetToken, + email: 'TestEmail@example.com', + } + ) + expect(response.status).toBe(200) + }) + + it("reset user's password", async () => { + expect.assertions(1) + + const response = await request.post('/api/v1/user/resetPassword', { + email: 'TestEmail@example.com', + passwordResetToken: passwordResetToken, + password: 'TestPassword', + }) + expect(response.status).toBe(200) + }) + + it('return data from a authenticated route', async () => { + expect.assertions(1) + + const response = await request.post('/api/v1/user/private', {}) + expect(response.status).toBe(200) + }) +}) + +/////////// +// Notes // +/////////// + +describe('note actions', () => { + it('creates a note', async () => { + expect.assertions(1) + + const response = await request.post('/api/v1/notes', { + title: 'Here is my first note', + content: 'Here is my main content.', + }) + expect(response.status).toBe(200) + }) + + it('shows a note', async () => { + expect.assertions(4) + + const response = await request.get('/api/v1/notes/' + '1') + expect(response.status).toBe(200) + expect(response.data.id).toBe(1) + expect(response.data.title).toBe('Here is my first note') + expect(response.data.content).toBe('Here is my main content.') + }) + + it("gets a bunch of a user's notes", async () => { + expect.assertions(4) + + const response = await request.get('/api/v1/notes/', { + params: { sort: '', order: 'desc', page: 0, limit: 20 }, + }) + expect(response.status).toBe(200) + expect(response.data[0].id).toBe(1) + expect(response.data[0].title).toBe('Here is my first note') + expect(response.data[0].content).toBe('Here is my main content.') + }) + + it('updates a note', async () => { + expect.assertions(1) + + const response = await request.put('/api/v1/notes/' + '1', { + title: 'Here is my first note', + content: 'Here is my main content.', + }) + expect(response.status).toBe(200) + }) + + it('deletes a note', async () => { + expect.assertions(1) + + const response = await request.delete('/api/v1/notes/' + '1') + expect(response.status).toBe(200) + }) +})