From 53b8cd1ede807f31fe91abe152005b6082e1b593 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:12:07 -0400 Subject: [PATCH 01/21] New unit tests for internals --- tests/getCardType.js | 10 ++++++++++ tests/typeCheck.js | 10 ++++++++++ 2 files changed, 20 insertions(+) create mode 100644 tests/getCardType.js create mode 100644 tests/typeCheck.js diff --git a/tests/getCardType.js b/tests/getCardType.js new file mode 100644 index 0000000..199cd58 --- /dev/null +++ b/tests/getCardType.js @@ -0,0 +1,10 @@ +import getCardType from '../src/_internals/getCardType' +import test from 'tape' + +test('Grabs proper card type', t => { + t.is(getCardType('341258393919545'), 'amex') + t.is(getCardType('5387109830289055'), 'master') + t.is(getCardType('6011906326377506'), 'discover') + t.is(getCardType('4122027811098688'), 'visa') + t.end() +}) diff --git a/tests/typeCheck.js b/tests/typeCheck.js new file mode 100644 index 0000000..afd881c --- /dev/null +++ b/tests/typeCheck.js @@ -0,0 +1,10 @@ +import typeCheck from '../src/_internals/typeCheck' +import test from 'tape' + +test('Properly checks for types', t => { + t.true(typeCheck('test')) + t.true(typeCheck(1)) + t.false(typeCheck({})) + t.false(typeCheck([])) + t.end() +}) From 8f20e1fb4a0f1fbe44d2f1d4c6ba8b09736c0a4a Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:13:11 -0400 Subject: [PATCH 02/21] Updated dependencies --- package-lock.json | 4086 ++++++++++++++++++++------------------------- package.json | 29 +- 2 files changed, 1789 insertions(+), 2326 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5d129ee..05a843c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,36 +1,35 @@ { "name": "simple-card", - "version": "2.1.1", + "version": "2.1.2", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.44" + "@babel/highlight": "^7.0.0" } }, "@babel/core": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.44.tgz", - "integrity": "sha512-E16ps55Av+GAO6qVTZeVR5FMVppraUPjiJEHuH0sANsbmkEjqQ70XQiv0KXPYbPzHBd+gijx6uLakSacjvtwIA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/generator": "7.0.0-beta.44", - "@babel/helpers": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0.tgz", + "integrity": "sha512-nrvxS5u6QUN5gLl1GEakIcmOeoUHT1/gQtdMRq18WFURJ5osn4ppJLVSseMQo4zVWKJfBTF4muIYijXUnKlRLQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helpers": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", "convert-source-map": "^1.1.0", "debug": "^3.1.0", "json5": "^0.5.0", - "lodash": "^4.2.0", - "micromatch": "^2.3.11", + "lodash": "^4.17.10", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" @@ -48,789 +47,676 @@ } }, "@babel/generator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", - "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.44", + "@babel/types": "^7.0.0", "jsesc": "^2.5.1", - "lodash": "^4.2.0", + "lodash": "^4.17.10", "source-map": "^0.5.0", "trim-right": "^1.0.1" } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.44.tgz", - "integrity": "sha512-trEw653XRNMCBIno/GyuffHi7AxB4miw1EHDeA/q9uIYNdyaXahIdQuBlbzGRWWoBdObFf4Ua0cDFgWkrfgBPw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.44" + "@babel/types": "^7.0.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.44.tgz", - "integrity": "sha512-M9+OPXXT3yqTvMlUmvXf53NX7qkzGkahXnkIyY15gNP/yWGG5ODYNa225Mq7/Vp0zMrI7JastEnn0AuEXSUQWA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0.tgz", + "integrity": "sha512-9HdU8lrAc4FUZOy+y2w//kUhynSpkGIRYDzJW1oKJx7+v8m6UEAbAd2tSvxirsq2kJTXJZZS6Eo8FnUDUH0ZWw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" + "@babel/helper-explode-assignable-expression": "^7.0.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-call-delegate": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.44.tgz", - "integrity": "sha512-2J9K2S2emLBqdNicB1lsjn3bIKPmn9/E5aNu5Yx8TS3pFpMRJjh4PQq5m669L+sajPw/9KE2U089xjPmPn1qcg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0.tgz", + "integrity": "sha512-HdYG6vr4KgXHK0q1QRZ8guoYCF5rZjIdPlhcVY+j4EBK/FDR+cXRM5/6lQr3NIWDc7dO1KfgjG5rfH6lM89VBw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" + "@babel/helper-hoist-variables": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-define-map": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.44.tgz", - "integrity": "sha512-u0YWuZFAT8tgyp5PJX2NjmU6UrKgQF2AZ0aqXXC/RMEdEFRGDe4t/VBk6MCvKjyOb8R5UqiaPJszq1VLB67aTw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0.tgz", + "integrity": "sha512-acbCxYS9XufWxsBiclmXMK1CFz7en/XSYvHFcbb3Jb8BqjFEBrA46WlIsoSQTRG/eYN60HciUnzdyQxOZhrHfw==", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "lodash": "^4.2.0" + "@babel/helper-function-name": "^7.0.0", + "@babel/types": "^7.0.0", + "lodash": "^4.17.10" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.44.tgz", - "integrity": "sha512-XM+nY15w/Hyb9yKhGnMMV3R2RUdPGl8/+pTfOKBt4/eLapozSrUh+7xrMOwgJOO+TWuQMlMbQLRJUiMsHUHNbw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0.tgz", + "integrity": "sha512-5gLPwdDnYf8GfPsjS+UmZUtYE1jaXTFm1P+ymGobqvXbA0q3ANgpH60+C6zDrRAWXYbQXYvzzQC/r0gJVNNltQ==", "dev": true, "requires": { - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-function-name": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", - "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", - "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.44" + "@babel/types": "^7.0.0" } }, "@babel/helper-hoist-variables": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.44.tgz", - "integrity": "sha512-WRMGJKSVP32/T7pBAb52oXa7dSGgtHk2VZ0nii/MzrXh40IYqNGRmKdI7x57pL421ccvnqZg+mgOH+mNFSKm6g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", + "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.44" + "@babel/types": "^7.0.0" } }, "@babel/helper-module-imports": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.44.tgz", - "integrity": "sha512-V95wi6rCffcLM46XdaUJHRc3D/XSvfsQshedaX1riHQCbs0uVopdswXrykwB6E/QEPfUGxXfs7l5GubupOi+Cw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.44", - "lodash": "^4.2.0" + "@babel/types": "^7.0.0" } }, "@babel/helper-module-transforms": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.44.tgz", - "integrity": "sha512-mwoQuzm1xY3L00Rf6vHO0tFKkBxarODf1f5l4wClTzvBmm7ReikPKyNwgS7wp2dzlorpIKPAAw+n3IEhnOjLJg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0.tgz", + "integrity": "sha512-QdwmTTlPmT7TZcf30dnqm8pem+o48tVt991xXogE5CQCwqSpWKuzH2E9v8VWeccQ66a6/CmrLZ+bwp66JYeM5A==", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.44", - "@babel/helper-simple-access": "7.0.0-beta.44", - "@babel/helper-split-export-declaration": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "lodash": "^4.2.0" + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0", + "lodash": "^4.17.10" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.44.tgz", - "integrity": "sha512-A9JodnSG8mNiazppInvrAtw4rN+TW61He/EnZ9szVgWkivonZeuG2D0hVLpE5sYuqw128seyw+tY9NEY7txmcQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.44" + "@babel/types": "^7.0.0" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.44.tgz", - "integrity": "sha512-k0hZ8w9N3b0Psmlw0bB7U9Hwqc+/hh7yOPFyLi5KAX9pRZ9i+UbTg6DxsVLVuITvF/M1UZNrq7vatrlEw/IPMg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", "dev": true }, "@babel/helper-regex": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.44.tgz", - "integrity": "sha512-UiL6tMd2eUPK6RVpaeUzQ0jDFzGaeQ3All+YpFc+K9onz1BXDArFoJBygZfkjOgfmwBiSbXLShpRBA5QMgOSmQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", + "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", "dev": true, "requires": { - "lodash": "^4.2.0" + "lodash": "^4.17.10" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.44.tgz", - "integrity": "sha512-Jk2mwO7QOx9n5ktVx8OOuuybyCuZ+gSnd9HqkdxqdfjF+kzJ6FvQ1QUqOf3Dg1uTFmN2/UzBpFgFV4OH71xmWw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0.tgz", + "integrity": "sha512-3o4sYLOsK6m0A7t1P0saTanBPmk5MAlxVnp9773Of4L8PMVLukU7loZix5KoJgflxSo2c2ETTzseptc0rQEp7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.44", - "@babel/helper-wrap-function": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-replace-supers": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.44.tgz", - "integrity": "sha512-8PTdsyYE+Fyn8Qy0Da7YnmXhm+vOI73YFHcrAW2s81g9Ae5F3ZA+RvQQe7RPP2mi+Jg/GqXGPUmHYqDpQ3pT9Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0.tgz", + "integrity": "sha512-fsSv7VogxzMSmGch6DwhKHGsciVXo7hbfhBgH9ZrgJMXKMjO7ASQTUfbVL7MU1uCfviyqjucazGK7TWPT9weuQ==", "dev": true, "requires": { - "@babel/helper-optimise-call-expression": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-simple-access": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.44.tgz", - "integrity": "sha512-z6tIoPYPT9VOgVSKC7wPjobjvCP/DEfM0uvMDhofAl8p0GDMmMCCs46UNBr6hW1T55WgUGdkNiCFYVnCLjWNFQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0.tgz", + "integrity": "sha512-CNeuX52jbQSq4j1n+R+21xrjbTjsnXa9n1aERbgHRD/p9h4Udkxr1n24yPMQmnTETHdnQDvkVSYWFw/ETAymYg==", "dev": true, "requires": { - "@babel/template": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "lodash": "^4.2.0" + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", - "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.44" + "@babel/types": "^7.0.0" } }, "@babel/helper-wrap-function": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.44.tgz", - "integrity": "sha512-qCdMAdMzDhO87r7yS2adqzIl2N9FJaVkPYq6bKllkNcmHquytve+hd/jD/lruD71i3JWkH+M352U+lhW2qkToA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0.tgz", + "integrity": "sha512-kjprWPDNVPZ/9pyLRXcZBvfjnFwqokmXTPTaC4AV8Ns7WRl7ewSxrB19AWZzQsC/WSPQLOw1ciR8uPYkAM1znA==", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" + "@babel/helper-function-name": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" } }, "@babel/helpers": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.44.tgz", - "integrity": "sha512-7qXsqiaMZzVuI0dobFGa9dQhCd6Y19lGeu4HrFHJo13/y9NKngepg/CYMzBi79TacKeaWfJNj3TeVCyRtfZqUg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0.tgz", + "integrity": "sha512-jbvgR8iLZPnyk6m/UqdXYsSxbVtRi7Pd3CzB4OPwPBnmhNG1DWjiiy777NTuoyIcniszK51R40L5pgfXAfHDtw==", "dev": true, "requires": { - "@babel/template": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" } }, "@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", - "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0.tgz", + "integrity": "sha512-RgJhNdRinpO8zibnoHbzTTexNs4c8ROkXFBanNDZTLHjwbdLk8J5cJSKulx/bycWTLYmKVNCkxRtVCoJnqPk+g==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.44.tgz", - "integrity": "sha512-FW6MZpaFERkozQ5eS3PG/645nubF+d6JjgcyBGlhB98qKd9NmdRLHZJ0eKmpA6yG8TeDzpsUve0BE/+XNAYLrw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/helper-remap-async-to-generator": "7.0.0-beta.44", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.44" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.44.tgz", - "integrity": "sha512-IQ9kUIPg4iKDPkVKHvN8EAiRa5qH6+fUqzWPMtsDzmXD2Rpdj0FtR/I0rJkqcutYxneNwfDJFsgTvmFixClSww==", - "dev": true, - "requires": { - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/plugin-syntax-class-properties": "7.0.0-beta.44" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0-beta.44.tgz", - "integrity": "sha512-rEU/M4gaeJRD/ReYkKukuDnAqyf0rMYlkk8IaLkvLgBgE/74+BFz9S239ueBIcmSZdTrAefdG/cpoxal0KkkTw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/plugin-syntax-export-namespace-from": "7.0.0-beta.44" - } - }, - "@babel/plugin-proposal-function-sent": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.0.0-beta.44.tgz", - "integrity": "sha512-O1ioLgmGc1zo79ITEM3k6MAiPyus/YYmorQ9gT32OTJgY3NdWJJHULLYFdJ0vqciZ12lf53tOYkUKpk42piqjQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0.tgz", + "integrity": "sha512-QsXmmjLrFADCcDQAfdQn7tfBRLjpTzRWaDpKpW4ZXW1fahPG4SvjcF1xfvVnXGC662RSExYXL+6DAqbtgqMXeA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/helper-wrap-function": "7.0.0-beta.44", - "@babel/plugin-syntax-function-sent": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.0.0", + "@babel/plugin-syntax-async-generators": "^7.0.0" } }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.0.0-beta.44.tgz", - "integrity": "sha512-Kk2NTanTtwvG/zn4eMSpy71Bd7/7N/kY3Zl/y6JMUIAlx+MfHM0efLRDLy3sME4f9YLlKMe5bpcIQ5s/j2O1rA==", + "@babel/plugin-proposal-json-strings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz", + "integrity": "sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/plugin-syntax-numeric-separator": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.0.0" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.44.tgz", - "integrity": "sha512-56Pqyeq3weYZccmcyzS4DVyVQ11SGWS6xCj/a5SmhvKXGHC2pEVovIBF63dFoQTlYFOzix9sZyW5oNVWicbTRg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz", + "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.44.tgz", - "integrity": "sha512-yAsZXzirCSUU1Bts1gpd5YJrE8cNHsvpU0umPFkd+zXNV9X1DuOKlbiBcZXoVoyoRcMs7BP15L+/IQ5HSVHQPg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.44" - } - }, - "@babel/plugin-proposal-throw-expressions": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.0.0-beta.44.tgz", - "integrity": "sha512-ABh+EYjNY5tlO1mysAyd+6bVSQW9EPZG5kzTXnT/USk0DOV7C/inh+cbE9JunTZ/DWCW9tFEJYmRXApiBLqEVQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz", + "integrity": "sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/plugin-syntax-throw-expressions": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.0.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.44.tgz", - "integrity": "sha512-K0eTqDoUfJT7UKnw9/looJEd8XB0WyOp7uIRHCdbewEjuL1OSza2unxJFoa8BfMAykou7M+L3wJ3O3C+hjjOtQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz", + "integrity": "sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/helper-regex": "7.0.0-beta.44", - "regexpu-core": "^4.1.3" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.2.0" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.44.tgz", - "integrity": "sha512-42MXWQvAN2IPPcW4HUbqgeyqkAwAsCGIHzxgSYoI7aOgkfOwHf5LRqSlJ56HAH+WwlWDQUvXeT/2PrQQY1vSCw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.44.tgz", - "integrity": "sha512-lyojjfVoXuL+Oa95TSVWyf5fMO+JzvMpbFQaZN+voWajMt+Cq3lx8N5JszjlcQzBOZOffqjzMxlAKhNVw95ufA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.44.tgz", - "integrity": "sha512-1NrDPMboC3FzaNdgT11CbX5owPPBlSRMT5XnrJ2KgB1ejKwa5dRhAWLCjP+MV77675Air7Gk+NVvec0G1GgxDg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0-beta.44.tgz", - "integrity": "sha512-4iZY3bWvP47w9euEpu/XJ03PKhiLgQWpfNjQFAIvke+WJsyeZ8jeEfQF8AsMiLth9FgrWWyKAQo1PNurlR7e7w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" - } - }, - "@babel/plugin-syntax-function-sent": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.0.0-beta.44.tgz", - "integrity": "sha512-HEMDxqDnIIvFVbnjYZ8SsZq4/NGGDEJZmL+n7BTzNM3vRS7xYnEZsZdxKzHQ3hoNhGMBxhfIyoZrFLxYDGMKHw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.0.0-beta.44.tgz", - "integrity": "sha512-hI/CI2f0eTdyiuM6OOqQEdYEm0RlzAduzBXCy0hERtBh3njc3ZhAM7L19sLbJafEIUAzno7tC0dzk/gv+GaM1A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz", + "integrity": "sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.0.0-beta.44.tgz", - "integrity": "sha512-8ya4r1L1UIby4px596ABbNVIbk1Fbrj8baBvu50h20ozrAv59mA/xv6mAG7mxB4jWg0qCWxcUp9JbfTKp7bcWw==", + "@babel/plugin-syntax-json-strings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz", + "integrity": "sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.44.tgz", - "integrity": "sha512-pVk9nFH7AAmn9Zor8Rv6g/JVXFwBW4FSFV1/3W84bw9s8yc8LZ7KqrCCpcHgBACVWJYnAtoxsaf7FFcQFl/z7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz", + "integrity": "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.44.tgz", - "integrity": "sha512-JnkSHFn+F3KHhFXRtc5qdkvOcFVOZR4NqIdgoNp87pNrLksmcHRwPtbJPuL2vSyUlr1Fd0QuAt6CDNpgf+55Mw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" - } - }, - "@babel/plugin-syntax-throw-expressions": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.0.0-beta.44.tgz", - "integrity": "sha512-ybmLNDQ1zcLavwnczLt82uDMEplkGaEDLg2/I/6TVIC6GSgENLdzdafOv1ICdRcgtQit7H7MtnBxNIK+zdj3Mg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz", + "integrity": "sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.44.tgz", - "integrity": "sha512-EnE9WACf+ZQZcLcmT26PEaIs3aWhr6shLJIdhaqZavN3CitxJvfia1q8WyCS4GO3wIdopgdeIpD2Xwe4wmJFFQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz", + "integrity": "sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.44.tgz", - "integrity": "sha512-+LTuKGnAd8w7FV45N+CvNE77GdcVMDT/w7so9++3jbG28w5id6VtQZ9cpFbqdvkZlpTy68Saw9zZcQeRZV3bmg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0.tgz", + "integrity": "sha512-CiWNhSMZzj1n3uEKUUS/oL+a7Xi8hnPQB6GpC1WfL/ZYvxBLDBn14sHMo5EyOaeArccSonyk5jFIKMRRbrHOnQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/helper-remap-async-to-generator": "7.0.0-beta.44" + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.0.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.44.tgz", - "integrity": "sha512-taD9vmzEyG4a5wZadYFVGnCgPU3JlkPrOMCmrIgqKT+AWuxwavSbtPJnUh2NfJDpvx005s/OIncc/3fpTx502Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz", + "integrity": "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.44.tgz", - "integrity": "sha512-a9mt8PwVaudo8LbLrp7TpbwV/HoO7T9Wjyr/aHB4UisUfQoE89iWBJYIweL/ho831Nzy8mNJlXfNxAfZc7Fojw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz", + "integrity": "sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "lodash": "^4.2.0" + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.10" } }, "@babel/plugin-transform-classes": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.44.tgz", - "integrity": "sha512-oQE40NQ9HBg3KJppRrG0AFYmb73mVJUPmFjUZtuMlFJWV4kAyPwfGC98MDJ7fFjGZLIWesJD7yE+eh0e4N2ssQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.44", - "@babel/helper-define-map": "7.0.0-beta.44", - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/helper-optimise-call-expression": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/helper-replace-supers": "7.0.0-beta.44", - "@babel/helper-split-export-declaration": "7.0.0-beta.44", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0.tgz", + "integrity": "sha512-8LBm7XsHQiNISEmb+ejBiHi1pUihwUf+lrIwyVsXVbQ1vLqgkvhgayK5JnW3WXvQD2rmM0qxFAIyDE5vtMem2A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.0.0", + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.44.tgz", - "integrity": "sha512-gLzREw6hb6qDoJMx/uMcXfkom5mboBi7yWg0S/uyof4laIl7cPCrrCleYZfi4sF9CgRPP48TMIoi2rVtKvrJ1g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz", + "integrity": "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-destructuring": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.44.tgz", - "integrity": "sha512-lTWaW8O3V01efNRDcAyf9iZ/kVuZc2PNHoCYitm74H/LVBk3dkKb4TymMDq/xYcTQCNPw5EvEH+3NIiLL29/Mw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz", + "integrity": "sha512-Fr2GtF8YJSXGTyFPakPFB4ODaEKGU04bPsAllAIabwoXdFrPxL0LVXQX5dQWoxOjjgozarJcC9eWGsj0fD6Zsg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.44.tgz", - "integrity": "sha512-4oF4gIPOUbljRGzdMdTAKVojOurkoMh3QLsGTPgNp1HrGtIKAQMprojA9O6gXwseIqiaVSnx3RwaVo3nHzS0oA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz", + "integrity": "sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/helper-regex": "7.0.0-beta.44", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", "regexpu-core": "^4.1.3" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.44.tgz", - "integrity": "sha512-j0qCx+zKF/iZXJBGm9QRJ9VCQuiFdZJHTueGPuzb2oxNMj2hPv+Uf2SOidxglbvHaGmDoODs6M0dVXnHTGoy9g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz", + "integrity": "sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.44.tgz", - "integrity": "sha512-6muSWR3UxdAnVnk8a4rxESNQk7F+djM+oeKkETMgWbw6TyaNaTD7OYkKGTdyTT5jn2UO97sPdgOBIBdnzQsKQg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0.tgz", + "integrity": "sha512-Ig74elCuFQ0mvHkWUq5qDCNI3qHWlop5w4TcDxdtJiOk8Egqe2uxDRY9XnXGSlmWClClmnixcoYumyvbAuj4dA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-for-of": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.44.tgz", - "integrity": "sha512-910UuvEuN6CM3G7+V3fHnYFBbw/YZUGgQlXpdlQnzN43uny2Xy33BxoFlWq1dOS1Q7xJnsJNEb2mm2Eks2uTvg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz", + "integrity": "sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.44.tgz", - "integrity": "sha512-GDxrbHs4VsbJjZbozMZY7AfMqGZ4U0LNp2YpZ6rMi++1LOo/pmSZ95VSX2T/XfI1c7xNVuVQDbH0QjaJUzUepw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0.tgz", + "integrity": "sha512-mR7JN9vkwsAIot74pSwzn/2Gq4nn2wN0HKtQyJLc1ghAarsymdBMTfh+Q/aeR2N3heXs3URQscTLrKe3yUU7Yw==", "dev": true, "requires": { - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-literals": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.44.tgz", - "integrity": "sha512-h6KxHCj14tYj1dahXlfs/JP1fMzMHdmVCapM4UjberhkcAj4ZkZpmdQbN2odaQRT1DX2hA8eQWsmeKJw2Ifq8w==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz", + "integrity": "sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.44.tgz", - "integrity": "sha512-dVaGOhwv8VogqXOtIKoFczjCadSf6PMEafgumE+3tOmzIrM1gFplC7rDxi52RKSOxrl8q07Lc1PToh4k/7+nRA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0.tgz", + "integrity": "sha512-CtSVpT/0tty/4405qczoIHm41YfFbPChplsmfBwsi3RTq/M9cHgVb3ixI5bqqgdKkqWwSX2sXqejvMKLuTVU+Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-module-transforms": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.44.tgz", - "integrity": "sha512-wi1CPE/1G+EhJwFMgF0zhtE427dspqakhkl4na0KW0xmzh1Q3EKhfHsK/gizzNQlNtHRaW/Ks/vafJD3bAlk1Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0.tgz", + "integrity": "sha512-BIcQLgPFCxi7YygtNpz5xj+7HxhOprbCGZKeLW6Kxsn1eHS6sJZMw4MfmqFZagl/v6IVa0AJoMHdDXLVrpd3Aw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/helper-simple-access": "7.0.0-beta.44" + "@babel/helper-module-transforms": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.0.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.44.tgz", - "integrity": "sha512-sFY/F3a5WzscOsHqcEyKLxySZzpQLuz98ZBwzDOplpY7BlkJGWNLwwh98Z/F+EddvHJ54Q9WgSw/PMC9LUKXSQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz", + "integrity": "sha512-8EDKMAsitLkiF/D4Zhe9CHEE2XLh4bfLbb9/Zf3FgXYQOZyZYyg7EAel/aT2A7bHv62jwHf09q2KU/oEexr83g==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-hoist-variables": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.44.tgz", - "integrity": "sha512-thm2inPP4aSdYRUauR2gVC3s0g5UGK1kUns7DBpZQBSY9eJjAr5LqmXhQh1Szq79vI1ZRZTDoxrTkdFqubAALA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0.tgz", + "integrity": "sha512-EMyKpzgugxef+R1diXDwqw/Hmt5ls8VxfI8Gq5Lo8Qp3oKIepkYG4L/mvE2dmZSRalgL9sguoPKbnQ1m96hVFw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-module-transforms": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.44.tgz", - "integrity": "sha512-clkSQygTIEDo4GCKBI4FXvbqBTz9Mnp6gLLlYodxua2sVEAym877k5ndvoBjXT6Gvymq1YoO4Eeot8x7rXNPFA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", + "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-object-super": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.44.tgz", - "integrity": "sha512-KlcV7gSBppnANHxCk8Hxca2PCrKOAoSTWj7HxiGCwrOcRJeMYPIiBayExGmfN7Ymvt0EpgSvL8bwyOPMk10mgg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0.tgz", + "integrity": "sha512-BfAiF1l18Xr1shy1NyyQgLiHDvh/S7APiEM5+0wxTsQ+e3fgXO+NA47u4PvppzH0meJS21y0gZHcjnvUAJj8tQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/helper-replace-supers": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.0.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.44.tgz", - "integrity": "sha512-TDEBU2tSAKC0HESeVPwVY6Wlcwgpml5ZymSqxqY0Gr7ei7PTON2O7zmntfmyiigN3BoHxuXnqFqwaz//3KxtTA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0.tgz", + "integrity": "sha512-eWngvRBWx0gScot0xa340JzrkA+8HGAk1OaCHDfXAjkrTFkp73Lcf+78s7AStSdRML5nzx5aXpnjN1MfrjkBoA==", "dev": true, "requires": { - "@babel/helper-call-delegate": "7.0.0-beta.44", - "@babel/helper-get-function-arity": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-call-delegate": "^7.0.0", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-regenerator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.44.tgz", - "integrity": "sha512-G2M4SqLMVJK5y3fs0qgGaBscUmEhAXEY25qNtPBgYsGmdl8k0sdBAf2/4s97iLmhU234DqJYSGa4VS38sau0ig==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", + "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", "dev": true, "requires": { - "regenerator-transform": "^0.12.3" + "regenerator-transform": "^0.13.3" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.44.tgz", - "integrity": "sha512-LG213xsGpvCB09Tq7EMaO3COzyNhzV7Hss00UMXR3AId4EThwRoYiLKnekqoOasNdocN+09fKyH3cf/llJgZhQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz", + "integrity": "sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-spread": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.44.tgz", - "integrity": "sha512-8fEte+nRW4OSdC23P0KBpiE7U4j0GpupMchnsjySYYNimKFnzPP5UYacZ6Lti5kS0XAnVfs09iHLXG1ccsWQsA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz", + "integrity": "sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.44.tgz", - "integrity": "sha512-iqByRYvEMG59aOsAAJKRuolqwQOrRIGDfLTaDr45uaW5OLKUaQiPG/BxMF0WDNcQhKIhxiLUZ2K1s26v6SpsKg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz", + "integrity": "sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/helper-regex": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" } }, "@babel/plugin-transform-template-literals": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.44.tgz", - "integrity": "sha512-HePlWdKQ5iMTq5C5Zs8hfI0ro2grH+varpTSLpUCOhnYl3yL9bbbgPAdbUwICasi+lIT0Gt94c73BZ1bCnfTWw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz", + "integrity": "sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.44.tgz", - "integrity": "sha512-ObXHYNMRrvRcKANNVbR50ZrtX5i7qiJYH2GiD4snt6pOEooWJQmbHALFyTS/+I4eCVhNe6CQ6cMqXDhMl0RYOw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz", + "integrity": "sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.44.tgz", - "integrity": "sha512-AD5T8aBMcS+dCyaF2WTT2zVPW86+ISxFCKZp6/Nh98SFxaXKuGtT1POvL7eoj3p18JN3mixAImmJSA7ppCDbJQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz", + "integrity": "sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/helper-regex": "7.0.0-beta.44", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", "regexpu-core": "^4.1.3" } }, "@babel/preset-env": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.44.tgz", - "integrity": "sha512-b0fiva7rflvUH1+PcehxE8820GdcaMUxyIhL3zhgs/CQour8cJgI6voR6b3lEP5l6wOglPvKyW9dFSSOPknaBA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.44", - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.44", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.44", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.44", - "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.44", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.44", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.44", - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.44", - "@babel/plugin-transform-arrow-functions": "7.0.0-beta.44", - "@babel/plugin-transform-async-to-generator": "7.0.0-beta.44", - "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.44", - "@babel/plugin-transform-block-scoping": "7.0.0-beta.44", - "@babel/plugin-transform-classes": "7.0.0-beta.44", - "@babel/plugin-transform-computed-properties": "7.0.0-beta.44", - "@babel/plugin-transform-destructuring": "7.0.0-beta.44", - "@babel/plugin-transform-dotall-regex": "7.0.0-beta.44", - "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.44", - "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.44", - "@babel/plugin-transform-for-of": "7.0.0-beta.44", - "@babel/plugin-transform-function-name": "7.0.0-beta.44", - "@babel/plugin-transform-literals": "7.0.0-beta.44", - "@babel/plugin-transform-modules-amd": "7.0.0-beta.44", - "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.44", - "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.44", - "@babel/plugin-transform-modules-umd": "7.0.0-beta.44", - "@babel/plugin-transform-new-target": "7.0.0-beta.44", - "@babel/plugin-transform-object-super": "7.0.0-beta.44", - "@babel/plugin-transform-parameters": "7.0.0-beta.44", - "@babel/plugin-transform-regenerator": "7.0.0-beta.44", - "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.44", - "@babel/plugin-transform-spread": "7.0.0-beta.44", - "@babel/plugin-transform-sticky-regex": "7.0.0-beta.44", - "@babel/plugin-transform-template-literals": "7.0.0-beta.44", - "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.44", - "@babel/plugin-transform-unicode-regex": "7.0.0-beta.44", - "browserslist": "^3.0.0", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0.tgz", + "integrity": "sha512-Fnx1wWaWv2w2rl+VHxA9si//Da40941IQ29fKiRejVR7oN1FxSEL8+SyAX/2oKIye2gPvY/GBbJVEKQ/oi43zQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.0.0", + "@babel/plugin-syntax-async-generators": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-dotall-regex": "^7.0.0", + "@babel/plugin-transform-duplicate-keys": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-amd": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-modules-systemjs": "^7.0.0", + "@babel/plugin-transform-modules-umd": "^7.0.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typeof-symbol": "^7.0.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "browserslist": "^4.1.0", "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", "semver": "^5.3.0" } }, "@babel/preset-stage-2": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/preset-stage-2/-/preset-stage-2-7.0.0-beta.44.tgz", - "integrity": "sha512-qq64Z7qh8+X9baz4rks2OAC3jCx1Mkgu1bRHStPajNy2YVtvGcAYhOZs33DZNFJ3lz8SIsCe7SVzLEEm8g0+bw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/plugin-proposal-export-namespace-from": "7.0.0-beta.44", - "@babel/plugin-proposal-function-sent": "7.0.0-beta.44", - "@babel/plugin-proposal-numeric-separator": "7.0.0-beta.44", - "@babel/plugin-proposal-throw-expressions": "7.0.0-beta.44", - "@babel/preset-stage-3": "7.0.0-beta.44" - } - }, - "@babel/preset-stage-3": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/preset-stage-3/-/preset-stage-3-7.0.0-beta.44.tgz", - "integrity": "sha512-dgovqlGQYZ+9mZtV+tpbQc+ZrkChnDeL2Rd5rf41nupVO8bcqox/fNvKJm0+giC6v9OaQaKn919LM7VKj2R3aw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.44", - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.44", - "@babel/plugin-proposal-class-properties": "7.0.0-beta.44", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.44", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.44", - "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.44", - "@babel/plugin-syntax-dynamic-import": "7.0.0-beta.44", - "@babel/plugin-syntax-import-meta": "7.0.0-beta.44" - } + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-stage-2/-/preset-stage-2-7.0.0.tgz", + "integrity": "sha512-A8ia2Wus0OAP6hh28ZgPSCBJEX3Jnql3kg9di/I+Lmg1gbJXgDZBrHr/UGZXl20Vi1lXgMuUq8c8J899KFr5gA==", + "dev": true }, "@babel/template": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", - "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "lodash": "^4.2.0" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" } }, "@babel/traverse": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", - "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz", + "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/generator": "7.0.0-beta.44", - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/helper-split-export-declaration": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0", "debug": "^3.1.0", "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" + "lodash": "^4.17.10" }, "dependencies": { "debug": { @@ -845,13 +731,13 @@ } }, "@babel/types": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", - "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.2.0", + "lodash": "^4.17.10", "to-fast-properties": "^2.0.0" } }, @@ -878,32 +764,24 @@ "dev": true }, "@types/node": { - "version": "10.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz", - "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==", + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.4.tgz", + "integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw==", "dev": true }, "acorn": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz", - "integrity": "sha512-XLmq3H/BVvW6/GbxKryGxWORz1ebilSsUDlyC27bXhWGWAZWkGwS6FLHjOlwFXNFoWFQEO/Df4u0YYd0K3BQgQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", + "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", "dev": true }, "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz", + "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==", "dev": true, "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } + "acorn": "^5.0.3" } }, "ajv": { @@ -919,9 +797,9 @@ } }, "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true }, "align-text": { @@ -960,9 +838,9 @@ } }, "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "ansi-regex": { @@ -977,10 +855,26 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "~1.0.2" @@ -1081,17 +975,14 @@ "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=", - "dev": true - }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } }, "assert-plus": { "version": "1.0.0", @@ -1130,9 +1021,9 @@ "dev": true }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, "babel-code-frame": { @@ -1159,6 +1050,12 @@ "supports-color": "^2.0.0" } }, + "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 + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -1170,12 +1067,6 @@ } } }, - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", - "dev": true - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1250,15 +1141,57 @@ } }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "optional": true, "requires": { "tweetnacl": "^0.14.3" } }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "bluebird": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", @@ -1301,16 +1234,55 @@ "repeat-element": "^1.1.2" } }, + "brotli-size": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/brotli-size/-/brotli-size-0.0.2.tgz", + "integrity": "sha512-8Fblpr9EX6ySFNBLPhcv1j6Y7nQLStdWnzxzGOrjyFilrN/HA5Hmv9xYVwQ+dCqHgPSnWg26tYxg67IbBqTh5g==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "iltorb": "^2.0.5" + } + }, "browserslist": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", - "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.1.tgz", + "integrity": "sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000884", + "electron-to-chromium": "^1.3.62", + "node-releases": "^1.0.0-alpha.11" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, "buffer-shims": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", @@ -1387,9 +1359,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30000864", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000864.tgz", - "integrity": "sha512-8fuGh8n3MIQ7oBkO/ck7J4LXhV5Sz5aLyFmfpChWpK+rJhqYrOsGDdbBVDdyKIRBWamZpy6iM4OmLCFVudOOhg==", + "version": "1.0.30000884", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000884.tgz", + "integrity": "sha512-ibROerckpTH6U5zReSjbaitlH4gl5V4NWNCBzRNCa3GEDmzzkfStk+2k5mO4ZDM6pwtdjbZ3hjvsYhPGVLWgNw==", "dev": true }, "caseless": { @@ -1455,10 +1427,16 @@ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, "class-utils": { @@ -1538,6 +1516,12 @@ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, "collect-all": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.3.tgz", @@ -1574,9 +1558,9 @@ "dev": true }, "colors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.0.tgz", - "integrity": "sha512-EDpX3a7wHMWFA7PUHWPHNWqOxIIRSJetuwl0AS5Oi/5FMV8kWm69RTlgm00GKjBO1xFHMtBbL49yRtMMdticBw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz", + "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==", "dev": true }, "combined-stream": { @@ -1627,9 +1611,9 @@ } }, "commander": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz", - "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==", + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", "dev": true }, "common-sequence": { @@ -1650,17 +1634,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "config-master": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz", @@ -1678,6 +1651,12 @@ } } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", @@ -1685,10 +1664,13 @@ "dev": true }, "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } }, "copy-descriptor": { "version": "0.1.1", @@ -1703,16 +1685,17 @@ "dev": true }, "coveralls": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.1.tgz", - "integrity": "sha512-FAzXwiDOYLGDWH+zgoIA+8GbWv50hlx+kpEJyvzLKOdnIBv9uWoVl4DhqGgyUHpiRjAlF8KYZSipWXYtllWH6Q==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.2.tgz", + "integrity": "sha512-Tv0LKe/MkBOilH2v7WBiTBdudg2ChfGbdXafc/s330djpF3zKOmuehTeRwjXWc7pzfj9FrDUTA7tEx6Div8NFw==", "dev": true, "requires": { - "js-yaml": "^3.6.1", + "growl": "~> 1.10.0", + "js-yaml": "^3.11.0", "lcov-parse": "^0.0.10", - "log-driver": "^1.2.5", + "log-driver": "^1.2.7", "minimist": "^1.2.0", - "request": "^2.79.0" + "request": "^2.85.0" }, "dependencies": { "minimist": { @@ -1771,6 +1754,15 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "deep-assign": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz", @@ -1786,6 +1778,12 @@ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", "dev": true }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -1862,9 +1860,9 @@ "dev": true }, "deglob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz", - "integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", + "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", "dev": true, "requires": { "find-root": "^1.0.0", @@ -1939,6 +1937,18 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, "dir-glob": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", @@ -2002,28 +2012,29 @@ "dev": true }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "electron-to-chromium": { - "version": "1.3.51", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.51.tgz", - "integrity": "sha1-akK0nar38ipbN7mR2vlJ8029ubU=", + "version": "1.3.62", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.62.tgz", + "integrity": "sha512-x09ndL/Gjnuk3unlAyoGyUg3wbs4w/bXurgL7wL913vXHAOWmMhrLf1VNGRaMLngmadd5Q8gsV9BFuIr6rP+Xg==", "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "iconv-lite": "~0.4.13" + "once": "^1.4.0" } }, "error-ex": { @@ -2065,26 +2076,132 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "eslint-config-standard": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0.tgz", - "integrity": "sha512-oDdENzpViEe5fwuRCWla7AXQd++/oyIp8zP+iP9jiUPG6NBj3SHgdgtl/kTn00AjeN+1HNvavTKmYbMo+xMOlw==", - "dev": true - }, - "eslint-config-standard-jsx": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-5.0.0.tgz", - "integrity": "sha512-rLToPAEqLMPBfWnYTu6xRhm2OWziS2n40QFqJ8jAM8NSVzeVKTa3nclhsU4DpPJQRY60F34Oo1wi/71PN/eITg==", - "dev": true - }, - "eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "eslint": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", + "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", "dev": true, "requires": { - "debug": "^2.6.9", - "resolve": "^1.5.0" + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.2", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "dev": true + } + } + }, + "eslint-config-standard": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", + "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "dev": true + }, + "eslint-config-standard-jsx": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", + "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.0" }, "dependencies": { "debug": { @@ -2106,69 +2223,34 @@ "requires": { "debug": "^2.6.8", "pkg-dir": "^1.0.0" - }, - "dependencies": { - "find-up": { - "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.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "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.0" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - } + } + }, + "eslint-plugin-es": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.3.1.tgz", + "integrity": "sha512-9XcVyZiQRVeFjqHw8qHNDAZcQLqaHlOGGpeYqzYh8S4JYCWTCO3yzyen8yVmA5PratfzTRWDwCOFphtDEG+w/w==", + "dev": true, + "requires": { + "eslint-utils": "^1.3.0", + "regexpp": "^2.0.0" } }, "eslint-plugin-import": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz", - "integrity": "sha1-JgAu+/ylmJtyiKwEdQi9JPIXsWk=", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", "dev": true, "requires": { - "builtin-modules": "^1.1.1", "contains-path": "^0.1.0", "debug": "^2.6.8", "doctrine": "1.5.0", "eslint-import-resolver-node": "^0.3.1", - "eslint-module-utils": "^2.1.1", + "eslint-module-utils": "^2.2.0", "has": "^1.0.1", "lodash": "^4.17.4", "minimatch": "^3.0.3", - "read-pkg-up": "^2.0.0" + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" }, "dependencies": { "doctrine": { @@ -2184,51 +2266,94 @@ } }, "eslint-plugin-node": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", - "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", + "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", "dev": true, "requires": { - "ignore": "^3.3.6", + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^4.0.2", "minimatch": "^3.0.4", - "resolve": "^1.3.3", - "semver": "^5.4.1" + "resolve": "^1.8.1", + "semver": "^5.5.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "dev": true + } } }, "eslint-plugin-promise": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.7.0.tgz", - "integrity": "sha512-2WO+ZFh7vxUKRfR0cOIMrWgYKdR6S1AlOezw6pC52B6oYpd5WFghN+QHxvrRdZMtbo8h3dfUZ2o1rWb0UPbKtg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.0.tgz", + "integrity": "sha512-3on8creJifkmNHvT425jCWSuVK0DG0Quf3H75ENZFqvHl6/s2xme8z6bfxww13XwqfELYWKxc/N3AtBXyV1hdg==", "dev": true }, "eslint-plugin-react": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz", - "integrity": "sha512-KC7Snr4YsWZD5flu6A5c0AcIZidzW3Exbqp7OT67OaD2AppJtlBr/GuPrW/vaQM/yfZotEvKAdrxrO+v8vwYJA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", + "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", "dev": true, "requires": { - "doctrine": "^2.0.2", - "has": "^1.0.1", + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", "jsx-ast-utils": "^2.0.1", - "prop-types": "^15.6.0" + "prop-types": "^15.6.2" + }, + "dependencies": { + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + } } }, "eslint-plugin-standard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", - "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz", + "integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==", "dev": true }, "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -2236,44 +2361,43 @@ "dev": true }, "esm": { - "version": "3.0.37", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.37.tgz", - "integrity": "sha512-T7x0ZOnc8Olgvox3zO5wznU9/kQ9UrteddPp1q6aPCznarz3g07Gj1YKcKCavrBWBoJ+T3nwclDWqeMZsyWGNQ==", + "version": "3.0.82", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.82.tgz", + "integrity": "sha512-vakh2il2Q9QdwCUEiFQqtamOANcGATh5OlMRLaXsvOhuuzr/SXdngYw1rwJjesrljbnsq3+UZ5+3Y3uszc/U/w==", "dev": true }, "espree": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.3.tgz", - "integrity": "sha512-Zy3tAJDORxQZLl2baguiRU1syPERAIg0L+JB2MWorORgTu/CplzvxS9WWA7Xh4+Q+eOQihNs/1o1Xep8cvCxWQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz", + "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==", "dev": true, "requires": { - "acorn": "^5.4.0", - "acorn-jsx": "^3.0.0" + "acorn": "^5.6.0", + "acorn-jsx": "^4.1.1" } }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { "estraverse": "^4.0.0" } }, "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "^4.1.0", - "object-assign": "^4.0.1" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -2342,10 +2466,16 @@ "fill-range": "^2.1.0" } }, + "expand-template": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz", + "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg==", + "dev": true + }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "extend-shallow": { @@ -2370,9 +2500,9 @@ } }, "external-editor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", - "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "version": "2.2.0", + "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { "chardet": "^0.4.0", @@ -2396,9 +2526,9 @@ "dev": true }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, "fast-glob": { @@ -2739,29 +2869,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "dev": true, - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.9" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - } - } - }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -2815,14 +2922,14 @@ "dev": true }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", - "randomatic": "^1.1.3", + "randomatic": "^3.0.0", "repeat-element": "^1.1.2", "repeat-string": "^1.5.2" } @@ -2844,12 +2951,13 @@ "dev": true }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "locate-path": "^2.0.0" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "flat-cache": { @@ -2892,21 +3000,6 @@ "pify": "^2.0.0", "pinkie-promise": "^2.0.0" } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } } } }, @@ -2972,6 +3065,12 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "fs-then-native": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz", @@ -2996,6 +3095,59 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -3017,10 +3169,16 @@ "assert-plus": "^1.0.0" } }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3091,6 +3249,12 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, "gzip-size": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", @@ -3130,12 +3294,12 @@ "dev": true }, "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "dev": true, "requires": { - "ajv": "^5.1.0", + "ajv": "^5.3.0", "har-schema": "^2.0.0" } }, @@ -3163,6 +3327,12 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -3241,10 +3411,13 @@ } }, "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, "ignore": { "version": "3.3.7", @@ -3252,6 +3425,18 @@ "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", "dev": true }, + "iltorb": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-2.4.0.tgz", + "integrity": "sha512-Px3k32eqlAwpS0OwiQDRUrlPNeY1JKyZvH636cRRxxhkqc5ukmfXZStNHNfRzpa3tb9EK3Nq0pIX9cXUdr+q3w==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "npmlog": "^4.1.2", + "prebuild-install": "^5.0.0", + "which-pm-runs": "^1.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3274,23 +3459,28 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "dev": true, "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^2.0.4", + "external-editor": "^2.1.0", "figures": "^2.0.0", "lodash": "^4.3.0", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", + "rxjs": "^5.5.2", "string-width": "^2.1.0", "strip-ansi": "^4.0.0", "through": "^2.3.6" @@ -3577,16 +3767,6 @@ "isarray": "1.0.0" } }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "dev": true, - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -3600,9 +3780,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.1.tgz", - "integrity": "sha512-h9Vg3nfbxrF0PK0kZiNiMAyL8zXaLiBP/BXniaKSwVvAi1TaumYV2b0wPdmy1CRX3irYbYD1p4Wjbv4uyECiiQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz", + "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==", "dev": true, "requires": { "@babel/generator": "7.0.0-beta.51", @@ -3676,6 +3856,12 @@ "js-tokens": "^3.0.0" } }, + "@babel/parser": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", + "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", + "dev": true + }, "@babel/template": { "version": "7.0.0-beta.51", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", @@ -3726,33 +3912,48 @@ "ms": "2.0.0" } }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "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 }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", "dev": true } } }, - "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 - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "jest-worker": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", + "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", "dev": true, "requires": { - "argparse": "^1.0.7", + "merge-stream": "^1.0.1" + } + }, + "js-levenshtein": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.3.tgz", + "integrity": "sha512-/812MXr9RBtMObviZ8gQBhHO8MOrGj8HlEE+4ccMTElNA/6I3u39u+bhny55Lk921yn44nSZFy9naNLElL5wgQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", "esprima": "^4.0.0" } }, @@ -3933,6 +4134,11 @@ "graceful-fs": "^4.1.9" } }, + "kyanite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/kyanite/-/kyanite-0.7.0.tgz", + "integrity": "sha512-l/LSeaYUo6ib05zLEE3IS2hmMtjS0ebOos+X31u6ktEa05wP8alZ0C4E+x6x2hr2zbcEfJlAtSGrmI3Pr6Yr1g==" + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", @@ -3976,12 +4182,20 @@ "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" + }, + "dependencies": { + "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 + } } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, "lodash.camelcase": { @@ -4021,18 +4235,18 @@ "dev": true }, "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -4040,9 +4254,9 @@ } }, "magic-string": { - "version": "0.24.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.24.1.tgz", - "integrity": "sha512-YBfNxbJiixMzxW40XqJEIldzHyh5f7CZKalo1uZffevyrPEX8Qgo9s0dmcORLHdV47UyvJg8/zD+6hQG3qvJrA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.0.tgz", + "integrity": "sha512-Msbwa9oNYNPjwVh9ury5X2BHbTFWoirTlzuf4X+pIoSOQVKNRJHXTx1WmKYuXzRM4QZFv8dGXyZvhDMmWhGLPw==", "dev": true, "requires": { "sourcemap-codec": "^1.4.1" @@ -4075,12 +4289,27 @@ "integrity": "sha512-k4NaW+vS7ytQn6MgJn3fYpQt20/mOgYM5Ft9BYMfQJDz2QT6yEeS9XJ8k2Nw8JTeWK/znPPW2n3UJGzyYEiMoA==", "dev": true }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", "dev": true }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, "merge2": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", @@ -4109,18 +4338,18 @@ } }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", "dev": true }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "dev": true, "requires": { - "mime-db": "~1.33.0" + "mime-db": "~1.36.0" } }, "mimic-fn": { @@ -4129,10 +4358,16 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -4244,16 +4479,30 @@ "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", "dev": true }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "node-abi": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.3.tgz", + "integrity": "sha512-b656V5C0628gOOA2kwcpNA/bxdlqYF9FvxJ+qqVX0ctdXNVZpS8J6xEUYir3WAKc7U0BH/NRlSpNbGsy+azjeg==", + "dev": true, + "requires": { + "semver": "^5.4.1" + } + }, + "node-releases": { + "version": "1.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.11.tgz", + "integrity": "sha512-CaViu+2FqTNYOYNihXa5uPS/zry92I3vPU4nCB6JB3OeZ2UGtOpF5gRwuN4+m3hbEcL47bOXyun1jX2iC+3uEQ==", "dev": true, "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "semver": "^5.3.0" } }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", + "dev": true + }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -4379,6 +4628,18 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -4386,38 +4647,36 @@ "dev": true }, "nyc": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", - "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.0.1.tgz", + "integrity": "sha512-Op/bjhEF74IMtzMmgYt+ModTeMHoPZzHe4qseUguPBwg5qC6r4rYMBt1L3yRXQIbjUpEqmn24/1xAC/umQGU7w==", "dev": true, "requires": { "archy": "^1.0.0", "arrify": "^1.0.1", - "caching-transform": "^1.0.0", + "caching-transform": "^2.0.0", "convert-source-map": "^1.5.1", "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^2.1.0", - "istanbul-lib-report": "^1.1.3", - "istanbul-lib-source-maps": "^1.2.5", - "istanbul-reports": "^1.4.1", - "md5-hex": "^1.2.0", + "find-cache-dir": "^2.0.0", + "find-up": "^3.0.0", + "foreground-child": "^1.5.6", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.1", + "istanbul-lib-hook": "^2.0.1", + "istanbul-lib-instrument": "^2.3.2", + "istanbul-lib-report": "^2.0.1", + "istanbul-lib-source-maps": "^2.0.1", + "istanbul-reports": "^2.0.0", + "make-dir": "^1.3.0", "merge-source-map": "^1.1.0", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", + "resolve-from": "^4.0.0", "rimraf": "^2.6.2", - "signal-exit": "^3.0.1", + "signal-exit": "^3.0.2", "spawn-wrap": "^1.4.2", - "test-exclude": "^4.2.0", + "test-exclude": "^5.0.0", + "uuid": "^3.3.2", "yargs": "11.1.0", - "yargs-parser": "^8.0.0" + "yargs-parser": "^9.0.2" }, "dependencies": { "align-text": { @@ -4441,11 +4700,11 @@ "dev": true }, "append-transform": { - "version": "0.4.0", + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "default-require-extensions": "^1.0.0" + "default-require-extensions": "^2.0.0" } }, "archy": { @@ -4453,106 +4712,21 @@ "bundled": true, "dev": true }, - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, "arrify": { "version": "1.0.1", "bundled": true, "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "async": { "version": "1.5.2", "bundled": true, "dev": true }, - "atob": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, "balanced-match": { "version": "1.0.0", "bundled": true, "dev": true }, - "base": { - "version": "0.11.2", - "bundled": true, - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, "brace-expansion": { "version": "1.1.11", "bundled": true, @@ -4562,62 +4736,20 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "builtin-modules": { "version": "1.1.1", "bundled": true, "dev": true }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, "caching-transform": { - "version": "1.0.1", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" + "make-dir": "^1.0.0", + "md5-hex": "^2.0.0", + "package-hash": "^2.0.0", + "write-file-atomic": "^2.0.0" } }, "camelcase": { @@ -4636,27 +4768,6 @@ "lazy-cache": "^1.0.3" } }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "cliui": { "version": "2.1.0", "bundled": true, @@ -4681,25 +4792,11 @@ "bundled": true, "dev": true }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "commondir": { "version": "1.0.1", "bundled": true, "dev": true }, - "component-emitter": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, "concat-map": { "version": "0.0.1", "bundled": true, @@ -4710,11 +4807,6 @@ "bundled": true, "dev": true }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, "cross-spawn": { "version": "4.0.2", "bundled": true, @@ -4742,69 +4834,27 @@ "bundled": true, "dev": true }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-property": { - "version": "2.0.2", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } + "strip-bom": "^3.0.0" } }, "error-ex": { - "version": "1.3.1", + "version": "1.3.2", "bundled": true, "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, + "es6-error": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, "execa": { "version": "0.7.0", "bundled": true, @@ -4831,173 +4881,24 @@ } } }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "0.1.1", + "find-cache-dir": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" } }, "find-up": { - "version": "2.1.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^3.0.0" } }, - "for-in": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, "foreground-child": { "version": "1.5.6", "bundled": true, @@ -5007,21 +4908,13 @@ "signal-exit": "^3.0.0" } }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fs.realpath": { "version": "1.0.0", "bundled": true, "dev": true }, "get-caller-file": { - "version": "1.0.2", + "version": "1.0.3", "bundled": true, "dev": true }, @@ -5030,11 +4923,6 @@ "bundled": true, "dev": true }, - "get-value": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, "glob": { "version": "7.1.2", "bundled": true, @@ -5074,37 +4962,13 @@ } } }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", + "has-flag": { + "version": "3.0.0", "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "dev": true }, "hosted-git-info": { - "version": "2.6.0", + "version": "2.7.1", "bundled": true, "dev": true }, @@ -5132,14 +4996,6 @@ "bundled": true, "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-arrayish": { "version": "0.2.1", "bundled": true, @@ -5158,211 +5014,123 @@ "builtin-modules": "^1.0.0" } }, - "is-data-descriptor": { - "version": "0.1.4", + "is-fullwidth-code-point": { + "version": "2.0.0", "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } + "dev": true }, - "is-descriptor": { - "version": "0.1.6", + "is-stream": { + "version": "1.1.0", "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true, - "dev": true - } - } + "dev": true }, - "is-extendable": { - "version": "0.1.1", + "isexe": { + "version": "2.0.0", "bundled": true, "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", + "istanbul-lib-coverage": { + "version": "2.0.1", "bundled": true, "dev": true }, - "is-number": { - "version": "3.0.0", + "istanbul-lib-hook": { + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "kind-of": "^3.0.2" + "append-transform": "^1.0.0" } }, - "is-odd": { - "version": "2.0.0", + "istanbul-lib-report": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.1", + "make-dir": "^1.3.0", + "supports-color": "^5.4.0" + } + }, + "istanbul-lib-source-maps": { + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "is-number": "^4.0.0" + "debug": "^3.1.0", + "istanbul-lib-coverage": "^2.0.1", + "make-dir": "^1.3.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" }, "dependencies": { - "is-number": { - "version": "4.0.0", + "source-map": { + "version": "0.6.1", "bundled": true, "dev": true } } }, - "is-plain-object": { - "version": "2.0.4", + "istanbul-reports": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "isobject": "^3.0.1" + "handlebars": "^4.0.11" } }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-windows": { + "json-parse-better-errors": { "version": "1.0.2", "bundled": true, "dev": true }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "isobject": { - "version": "3.0.1", + "kind-of": { + "version": "3.2.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } }, - "istanbul-lib-coverage": { - "version": "1.2.0", + "lazy-cache": { + "version": "1.0.4", "bundled": true, - "dev": true + "dev": true, + "optional": true }, - "istanbul-lib-hook": { - "version": "1.1.0", + "lcid": { + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "append-transform": "^0.4.0" + "invert-kv": "^1.0.0" } }, - "istanbul-lib-report": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - }, - "istanbul-reports": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", + "load-json-file": { + "version": "4.0.0", "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, "locate-path": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "p-locate": "^2.0.0", + "p-locate": "^3.0.0", "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - } } }, + "lodash.flattendeep": { + "version": "4.4.0", + "bundled": true, + "dev": true + }, "longest": { "version": "1.0.1", "bundled": true, @@ -5377,21 +5145,16 @@ "yallist": "^2.1.2" } }, - "map-cache": { - "version": "0.2.2", - "bundled": true, - "dev": true - }, - "map-visit": { - "version": "1.0.0", + "make-dir": { + "version": "1.3.0", "bundled": true, "dev": true, "requires": { - "object-visit": "^1.0.0" + "pify": "^3.0.0" } }, "md5-hex": { - "version": "1.3.0", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { @@ -5426,33 +5189,6 @@ } } }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, "mimic-fn": { "version": "1.2.0", "bundled": true, @@ -5467,68 +5203,30 @@ } }, "minimist": { - "version": "0.0.8", + "version": "0.0.10", "bundled": true, "dev": true }, - "mixin-deep": { - "version": "1.3.1", + "mkdirp": { + "version": "0.5.1", "bundled": true, "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "minimist": "0.0.8" }, "dependencies": { - "is-extendable": { - "version": "1.0.1", + "minimist": { + "version": "0.0.8", "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } + "dev": true } } }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, "ms": { "version": "2.0.0", "bundled": true, "dev": true }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, "normalize-package-data": { "version": "2.4.0", "bundled": true, @@ -5553,47 +5251,6 @@ "bundled": true, "dev": true }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "once": { "version": "1.4.0", "bundled": true, @@ -5632,47 +5289,51 @@ "dev": true }, "p-limit": { - "version": "1.2.0", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.0.0" } }, "p-try": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "dev": true }, - "parse-json": { - "version": "2.2.0", + "package-hash": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "error-ex": "^1.2.0" + "graceful-fs": "^4.1.11", + "lodash.flattendeep": "^4.4.0", + "md5-hex": "^2.0.0", + "release-zalgo": "^1.0.0" } }, - "pascalcase": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "path-exists": { - "version": "2.1.0", + "parse-json": { + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "bundled": true, @@ -5683,112 +5344,59 @@ "bundled": true, "dev": true }, - "path-parse": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, "path-type": { - "version": "1.1.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "pify": "^3.0.0" } }, "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", + "version": "3.0.0", "bundled": true, "dev": true }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-dir": { - "version": "1.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } + "find-up": "^3.0.0" } }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, "pseudomap": { "version": "1.0.2", "bundled": true, "dev": true }, "read-pkg": { - "version": "1.1.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "load-json-file": "^1.0.0", + "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "path-type": "^3.0.0" } }, "read-pkg-up": { - "version": "1.0.1", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" } }, - "regex-not": { - "version": "1.0.2", + "release-zalgo": { + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "es6-error": "^4.0.1" } }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, "repeat-string": { "version": "1.6.1", "bundled": true, @@ -5800,226 +5408,66 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "ret": { - "version": "0.1.15", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } + "version": "1.0.1", + "bundled": true, + "dev": true }, - "snapdragon-node": { - "version": "2.1.1", + "resolve-from": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", "bundled": true, "dev": true, + "optional": true, "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } + "align-text": "^0.1.1" } }, - "snapdragon-util": { - "version": "3.0.1", + "rimraf": { + "version": "2.6.2", "bundled": true, "dev": true, "requires": { - "kind-of": "^3.2.0" + "glob": "^7.0.5" } }, - "source-map": { - "version": "0.5.7", + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", "bundled": true, "dev": true }, - "source-map-resolve": { - "version": "0.5.2", + "shebang-command": { + "version": "1.2.0", "bundled": true, "dev": true, "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "shebang-regex": "^1.0.0" } }, - "source-map-url": { - "version": "0.4.0", + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", "bundled": true, "dev": true }, + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true, + "optional": true + }, "spawn-wrap": { "version": "1.4.2", "bundled": true, @@ -6061,33 +5509,6 @@ "bundled": true, "dev": true }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "string-width": { "version": "2.1.1", "bundled": true, @@ -6106,56 +5527,32 @@ } }, "strip-bom": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } + "dev": true }, "strip-eof": { "version": "1.0.0", "bundled": true, "dev": true }, - "test-exclude": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", + "supports-color": { + "version": "5.4.0", "bundled": true, "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "has-flag": "^3.0.0" } }, - "to-regex-range": { - "version": "2.1.1", + "test-exclude": { + "version": "5.0.0", "bundled": true, "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "arrify": "^1.0.1", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^1.0.1" } }, "uglify-js": { @@ -6189,94 +5586,11 @@ "dev": true, "optional": true }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true, - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", + "uuid": { + "version": "3.3.2", "bundled": true, "dev": true }, - "use": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, "validate-npm-package-license": { "version": "3.0.3", "bundled": true, @@ -6358,13 +5672,13 @@ "dev": true }, "write-file-atomic": { - "version": "1.3.4", + "version": "2.3.0", "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "signal-exit": "^3.0.2" } }, "y18n": { @@ -6396,11 +5710,6 @@ "yargs-parser": "^9.0.2" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, "cliui": { "version": "4.1.0", "bundled": true, @@ -6411,18 +5720,48 @@ "wrap-ansi": "^2.0.0" } }, - "yargs-parser": { - "version": "9.0.2", + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", "bundled": true, "dev": true, "requires": { - "camelcase": "^4.1.0" + "p-try": "^1.0.0" } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true } } }, "yargs-parser": { - "version": "8.1.0", + "version": "9.0.2", "bundled": true, "dev": true, "requires": { @@ -6439,9 +5778,9 @@ } }, "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, "object-assign": { @@ -6590,6 +5929,12 @@ "wordwrap": "~1.0.0" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -6603,9 +5948,9 @@ "dev": true }, "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -6672,10 +6017,13 @@ "dev": true }, "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 + "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.0" + } }, "path-is-absolute": { "version": "1.0.1", @@ -6731,6 +6079,21 @@ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, "pkg-conf": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", @@ -6741,6 +6104,15 @@ "load-json-file": "^4.0.0" }, "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -6782,6 +6154,15 @@ "xtend": "^4.0.1" } }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + }, "plur": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", @@ -6800,6 +6181,37 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, + "prebuild-install": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.1.0.tgz", + "integrity": "sha512-jGdh2Ws5OUCvBm+aQ/je7hgOBfLIFcgnF9DZ1PIEvht0JKfMwn3Gy0MPHL16JcAUI6tu7LX0D3VxmvMm1XZwAw==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^1.0.2", + "github-from-package": "0.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "node-abi": "^2.2.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "os-homedir": "^1.0.1", + "pump": "^2.0.1", + "rc": "^1.2.7", + "simple-get": "^2.7.0", + "tar-fs": "^1.13.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -6841,22 +6253,12 @@ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "~2.0.3" - } - }, "prop-types": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", - "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", "dev": true, "requires": { - "fbjs": "^0.8.16", "loose-envify": "^1.3.1", "object-assign": "^4.1.1" } @@ -6876,6 +6278,22 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -6889,43 +6307,47 @@ "dev": true }, "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "dependencies": { "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true }, "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, @@ -6954,12 +6376,23 @@ "requires": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + } } }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -7059,9 +6492,9 @@ } }, "regenerator-transform": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.4.tgz", - "integrity": "sha512-p2I0fY+TbSLD2/VFTFb/ypEHxs3e3AjU0DzttdPqk2bSmDhfSh5E54b86Yc6XhUa5KykK1tgbvZ4Nr82oCJWkQ==", + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", + "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", "dev": true, "requires": { "private": "^0.1.6" @@ -7086,6 +6519,12 @@ "safe-regex": "^1.1.0" } }, + "regexpp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", + "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", + "dev": true + }, "regexpu-core": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", @@ -7142,31 +6581,39 @@ "dev": true }, "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "dev": true, "requires": { "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", + "aws4": "^1.8.0", "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "uuid": "^3.3.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } } }, "require-uncached": { @@ -7177,14 +6624,6 @@ "requires": { "caller-path": "^0.1.0", "resolve-from": "^1.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - } } }, "requizzle": { @@ -7213,6 +6652,12 @@ "path-parse": "^1.0.5" } }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -7264,9 +6709,9 @@ } }, "rollup": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.62.0.tgz", - "integrity": "sha512-mZS0aIGfYzuJySJD78znu9/hCJsNfBzg4lDuZGMj0hFVcYHt2evNRHv8aqiu9/w6z6Qn8AQoVl4iyEjDmisGeA==", + "version": "0.65.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.65.2.tgz", + "integrity": "sha512-BbXOrpxVbx0MpElI6vVLR2B6vnWHvYU/QAMw3GcEXvs601bvgrozuaW30cnvt43B96a6DeoYA0i9T5THanN+Rw==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -7274,116 +6719,52 @@ } }, "rollup-plugin-babel": { - "version": "4.0.0-beta.4", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.0.0-beta.4.tgz", - "integrity": "sha512-zr6iZ1yrd/0I36Lok+HFrTKSaolb4sKLQsJy/j27+dnFFjnavRlEgzec1zJXQr8owG22topvJ5rq3jfXIpvfnw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.0.3.tgz", + "integrity": "sha512-/PP0MgbPQyRywI4zRIJim6ySjTcOLo4kQbEbROqp9kOR3kHC3FeU++QpBDZhS2BcHtJTVZMVbBV46flbBN5zxQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.44", - "rollup-pluginutils": "^2.0.1" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.44.tgz", - "integrity": "sha512-V95wi6rCffcLM46XdaUJHRc3D/XSvfsQshedaX1riHQCbs0uVopdswXrykwB6E/QEPfUGxXfs7l5GubupOi+Cw==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.44", - "lodash": "^4.2.0" - } - }, - "@babel/types": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", - "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.3.0" } }, "rollup-plugin-cleanup": { - "version": "3.0.0-beta.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.0.0-beta.1.tgz", - "integrity": "sha512-cJDQfGR4pzVx7hJaTy9fHB5Cg4sIIEId23OyqeareXza9IS+gfKIO5ypZaUnkVmStZ6ye0+IpDyu4VMOoUkt1Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.0.0.tgz", + "integrity": "sha512-G7CGGvwIx1uEWm6TRaYiEez3+9PmSGlty6RjBZyrs9JlsXDGs58HiJZAdy9/KuRaPfwD974qU5444JtpPiduCA==", "dev": true, "requires": { - "acorn": "^5.5.3", - "magic-string": "^0.24.0", - "rollup-pluginutils": "^2.0.1" - }, - "dependencies": { - "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", - "dev": true - }, - "estree-walker": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", - "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", - "dev": true - }, - "rollup-pluginutils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.2.0.tgz", - "integrity": "sha512-aqjTUCfZJK3O+TjH++PdQc8Lg6V6t/1Fhu8/6f3qPQzBt0xZruDgqblvb3RQOfKybTgfxKpyy2pQmQ4X2OmY4w==", - "dev": true, - "requires": { - "estree-walker": "^0.5.2", - "micromatch": "^2.3.11" - } - } + "acorn": "^5.7.1", + "magic-string": "^0.25.0", + "rollup-pluginutils": "^2.3.0" } }, "rollup-plugin-filesize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-2.0.0.tgz", - "integrity": "sha512-ZFwmrHvfAXLyYLK9mgiFDCDg3wncX/Dx5XLA9KDBqVu+Gi3zH7hvpjho36QZyyAmYm8iEwv1KGOCMdCernzo7A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-4.0.1.tgz", + "integrity": "sha512-S7W6/G5+KCusq3gXwTOXQIqg88dKdv6jXhgQtZ8F1kJ9ecctzuUsWzE9yeVhcbGW92U0SgAerfOASOhBvEIN3g==", "dev": true, "requires": { "boxen": "^1.1.0", + "brotli-size": "0.0.2", "colors": "^1.1.2", "deep-assign": "^2.0.0", "filesize": "^3.5.6", - "gzip-size": "^3.0.0" + "gzip-size": "^3.0.0", + "terser": "^3.8.0" } }, "rollup-plugin-uglify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-4.0.0.tgz", - "integrity": "sha512-f6W31EQLzxSEYfN3x6/lyljHqXSoCjXKcTsnwz3evQvHgU1+qTzU2SE0SIG7tbAvaCewp2UaZ5x3k6nYsxOP9A==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-5.0.2.tgz", + "integrity": "sha512-CRRyMgKjTwTx1GXnn+v1VYV+6De5NyPB1UBStsQIQ+asrxvP7dK43cg2pf1vyFNr/NIHGvfYAR9Yo4j+5ZMQsw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0-beta.47", - "uglify-js": "^3.3.25" + "@babel/code-frame": "^7.0.0", + "jest-worker": "^23.2.0", + "uglify-js": "^3.4.8" }, "dependencies": { - "@babel/code-frame": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.52.tgz", - "integrity": "sha1-GSSDv6DR5GfBAVccIQKcy3SvKAE=", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.52" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.52.tgz", - "integrity": "sha1-7ySTFDLwYVXnvDnNuKaze0oos9A=", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7391,21 +6772,21 @@ "dev": true }, "uglify-js": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.4.tgz", - "integrity": "sha512-RiB1kNcC9RMyqwRrjXC+EjgLoXULoDnCaOnEDzUCHkBN0bHwmtF5rzDMiDWU29gu0kXCRRWwtcTAVFWRECmU2Q==", + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", "dev": true, "requires": { - "commander": "~2.16.0", + "commander": "~2.17.1", "source-map": "~0.6.1" } } } }, "rollup-pluginutils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.2.0.tgz", - "integrity": "sha512-aqjTUCfZJK3O+TjH++PdQc8Lg6V6t/1Fhu8/6f3qPQzBt0xZruDgqblvb3RQOfKybTgfxKpyy2pQmQ4X2OmY4w==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.1.tgz", + "integrity": "sha512-JZS8aJMHEHhqmY2QVPMXwKP6lsD1ShkrcGYjhAIvqKKdXQyPHw/9NF0tl3On/xOJ4ACkxfeG7AF+chfCN1NpBg==", "dev": true, "requires": { "estree-walker": "^0.5.2", @@ -7427,25 +6808,19 @@ "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", "dev": true }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", "dev": true, "requires": { - "rx-lite": "*" + "symbol-observable": "1.0.1" } }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "safe-regex": { @@ -7457,10 +6832,22 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha1-4FnAnYVx8FQII3M0M1BdOi8AsY4=", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { @@ -7486,12 +6873,6 @@ } } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -7525,6 +6906,23 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", + "dev": true + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "dev": true, + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -7689,6 +7087,24 @@ "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", @@ -7747,9 +7163,9 @@ "dev": true }, "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "dev": true, "requires": { "asn1": "~0.2.3", @@ -7759,92 +7175,31 @@ "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" } }, "standard": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/standard/-/standard-11.0.1.tgz", - "integrity": "sha512-nu0jAcHiSc8H+gJCXeiziMVZNDYi8MuqrYJKxTgjP4xKXZMKm311boqQIzDrYI/ktosltxt2CbDjYQs9ANC8IA==", - "dev": true, - "requires": { - "eslint": "~4.18.0", - "eslint-config-standard": "11.0.0", - "eslint-config-standard-jsx": "5.0.0", - "eslint-plugin-import": "~2.9.0", - "eslint-plugin-node": "~6.0.0", - "eslint-plugin-promise": "~3.7.0", - "eslint-plugin-react": "~7.7.0", - "eslint-plugin-standard": "~3.0.1", - "standard-engine": "~8.0.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "eslint": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.18.2.tgz", - "integrity": "sha512-qy4i3wODqKMYfz9LUI8N2qYDkHkoieTbiHpMrYUI/WbjhXJQr7lI4VngixTgaG+yHX+NBCv7nW4hA0ShbvaNKw==", - "dev": true, - "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.2", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" - } - }, - "globals": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", - "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", - "dev": true - } + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz", + "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==", + "dev": true, + "requires": { + "eslint": "~5.4.0", + "eslint-config-standard": "12.0.0", + "eslint-config-standard-jsx": "6.0.2", + "eslint-plugin-import": "~2.14.0", + "eslint-plugin-node": "~7.0.1", + "eslint-plugin-promise": "~4.0.0", + "eslint-plugin-react": "~7.11.1", + "eslint-plugin-standard": "~4.0.0", + "standard-engine": "~9.0.0" } }, "standard-engine": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-8.0.1.tgz", - "integrity": "sha512-LA531C3+nljom/XRvdW/hGPXwmilRkaRkENhO3FAGF1Vtq/WtCXzgmnc5S6vUHHsgv534MRy02C1ikMwZXC+tw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz", + "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==", "dev": true, "requires": { "deglob": "^2.1.0", @@ -7853,12 +7208,6 @@ "pkg-conf": "^2.0.0" }, "dependencies": { - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", @@ -7926,7 +7275,7 @@ "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -7958,7 +7307,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -8005,18 +7354,50 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "version": "4.0.3", + "resolved": "http://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", "dev": true, "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", "chalk": "^2.1.0", "lodash": "^4.17.4", "slice-ansi": "1.0.0", "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } } }, "table-layout": { @@ -8178,6 +7559,45 @@ } } }, + "tar-fs": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", + "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", + "dev": true, + "requires": { + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" + }, + "dependencies": { + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "tar-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz", + "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.1.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.0", + "xtend": "^4.0.0" + } + }, "temp-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz", @@ -8193,6 +7613,25 @@ "execa": "^0.7.0" } }, + "terser": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.8.2.tgz", + "integrity": "sha512-FGSBXiBJe2TSXy6pWwXpY0YcEWEK35UKL64BBbxX3aHqM4Nj0RMqXvqBuoSGfyd80t8MKQ5JwYm5jRRGTSEFNg==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "test-value": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", @@ -8234,6 +7673,12 @@ "os-tmpdir": "~1.0.2" } }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -8283,11 +7728,12 @@ } }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "dev": true, "requires": { + "psl": "^1.1.24", "punycode": "^1.4.1" } }, @@ -8328,24 +7774,12 @@ "prelude-ls": "~1.1.2" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, "typical": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", "dev": true }, - "ua-parser-js": { - "version": "0.7.18", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz", - "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==", - "dev": true - }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -8503,6 +7937,23 @@ } } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -8533,9 +7984,9 @@ "dev": true }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true }, "validate-npm-package-license": { @@ -8565,21 +8016,30 @@ "integrity": "sha1-I1h4ejXakQMtrV6S+AsSNw2HlcU=", "dev": true }, - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", - "dev": true - }, "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "^2.0.0" } }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "widest-line": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", diff --git a/package.json b/package.json index 3e08874..6a74eeb 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "test": "tape -r esm tests/*.js | tap-spec", "test:cov": "nyc npm test", "coverage": "nyc report --reporter=text-lcov | coveralls", - "lint": "standard src/*.js" + "lint": "standard --fix src/*.js" }, "nyc": { "include": [ @@ -54,23 +54,26 @@ }, "homepage": "https://github.com/dhershman1/simple-card", "devDependencies": { - "@babel/core": "7.0.0-beta.44", - "@babel/preset-env": "7.0.0-beta.44", - "@babel/preset-stage-2": "7.0.0-beta.44", - "coveralls": "3.0.1", + "@babel/core": "7.0.0", + "@babel/preset-env": "7.0.0", + "@babel/preset-stage-2": "7.0.0", + "coveralls": "3.0.2", "del": "3.0.0", - "esm": "3.0.37", + "esm": "3.0.82", "globby": "8.0.1", "jsdoc-to-markdown": "4.0.1", "npm-run-all": "4.1.3", - "nyc": "12.0.2", - "rollup": "0.62.0", - "rollup-plugin-babel": "4.0.0-beta.4", - "rollup-plugin-cleanup": "3.0.0-beta.1", - "rollup-plugin-filesize": "2.0.0", - "rollup-plugin-uglify": "4.0.0", - "standard": "11.0.1", + "nyc": "13.0.1", + "rollup": "0.65.2", + "rollup-plugin-babel": "4.0.3", + "rollup-plugin-cleanup": "3.0.0", + "rollup-plugin-filesize": "4.0.1", + "rollup-plugin-uglify": "5.0.2", + "standard": "12.0.1", "tap-spec": "5.0.0", "tape": "4.9.1" + }, + "dependencies": { + "kyanite": "0.7.0" } } From 2fbd257e14770d156120ce11b5c45b182531d638 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:13:36 -0400 Subject: [PATCH 03/21] Rebuilt cvn validation --- src/cvn.js | 49 ++++++++++++++++--------------------------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/src/cvn.js b/src/cvn.js index 17a8103..3b250d0 100644 --- a/src/cvn.js +++ b/src/cvn.js @@ -1,19 +1,5 @@ import typeCheck from './_internals/typeCheck' -const getCvnType = cvn => { - const len = cvn.length - - if (len === 3) { - return 'norm' - } - - if (len === 4) { - return 'amex' - } - - return false -} - /** * @name cvn * @since v2.0.0 @@ -24,32 +10,29 @@ const getCvnType = cvn => { * @return {Object} An object containing a isValid boolean and some info * * @example - * cvn('333'); // => { isValid: true, cvnType: 'norm' } - * cvn(333); // => { isValid: true, cvnType: 'norm' } - * cvn('4444'); // => { isValid: true, cvnType: 'amex' } - * cvn(4444); // => { isValid: true, cvnType: 'amex' } - * cvn('55555'); // => { isValid: false, cvnType: 'Invalid CVN Code' } - * cvn(55555); // => { isValid: false, cvnType: 'Invalid CVN Code' } + * cvn('333') // => { isValid: true, cvnType: 'norm' } + * cvn(333) // => { isValid: true, cvnType: 'norm' } + * cvn('4444') // => { isValid: true, cvnType: 'amex' } + * cvn(4444) // => { isValid: true, cvnType: 'amex' } + * cvn('55555') // => { isValid: false, cvnType: 'Invalid CVN Code' } + * cvn(55555) // => { isValid: false, cvnType: 'Invalid CVN Code' } */ export default cvnCode => { if (!typeCheck(cvnCode)) { throw new TypeError('cvn should be a string or number type') } - const results = { - isValid: false, - cvnType: 'Invalid CVN Code' - } - const sanitizedCVN = String(cvnCode).replace(/\D/g, '') + const sanitized = String(cvnCode).replace(/\D/g, '') + let type = 'Invalid CVN Code' - const type = getCvnType(sanitizedCVN) - - if (type) { - return { - isValid: true, - cvnType: type - } + if (sanitized.length === 3) { + type = 'norm' + } else if (sanitized.length === 4) { + type = 'amex' } - return results + return { + isValid: type !== 'Invalid CVN Code', + cvnType: type + } } From 86da61f6a7fe501bc2d25b65596705927e09280b Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:14:08 -0400 Subject: [PATCH 04/21] Re worked expire functionality keeping it more contained --- src/expired.js | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/src/expired.js b/src/expired.js index 2f8ae58..0523a12 100644 --- a/src/expired.js +++ b/src/expired.js @@ -1,24 +1,13 @@ +import type from 'kyanite/type' + const fullYear = year => { if (year.length === 2) { - return `20${year}` + return `${String(new Date().getFullYear()).slice(0, 2)}${year}` } return year } -const generateDate = () => { - const dateObj = new Date() - - return new Date(`${dateObj.getMonth() + 1}/1/${dateObj.getFullYear()}`) -} - -const normalizeDate = date => { - const cleanDate = date.replace(/\s/g, '') - const splitDate = cleanDate.split(/\W/g) - - return `${splitDate[0]}/1/${fullYear(splitDate[1])}` -} - /** * @name expired * @since v2.0.0 @@ -30,16 +19,17 @@ const normalizeDate = date => { * * @example * // Assuming "currDate" is a variable that holds the current date in a XX/XX format - * expired(currDate); // => { isValid: true, isExpired: false } - * expired('01/18'); // => { isValid: false, isExpired: true } + * expired(currDate) // => { isValid: true, isExpired: false } + * expired('01/18') // => { isValid: false, isExpired: true } */ const expired = date => { - if (typeof date !== 'string') { + if (type(date) !== 'String') { throw new TypeError('date should be a string type') } - - const currDate = generateDate() - const expireDate = new Date(normalizeDate(date)) + const dateObj = new Date() + const [month, year] = date.replace(/\s/g, '').split(/\W/g) + const currDate = new Date(`${dateObj.getMonth() + 1}/1/${dateObj.getFullYear()}`) + const expireDate = new Date(`${month}/1/${fullYear(year)}`) const isExpired = !isNaN(expireDate) ? currDate > expireDate : true return { From 9e2addc4c91ca10b7bf83d81013a09783cdfbaa7 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:14:38 -0400 Subject: [PATCH 05/21] Re built matches functionality optimized and better regex matching --- src/matches.js | 42 ++++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/src/matches.js b/src/matches.js index 2c40a17..52049c3 100644 --- a/src/matches.js +++ b/src/matches.js @@ -1,22 +1,10 @@ +import and from 'kyanite/and' +import not from 'kyanite/not' +import or from 'kyanite/or' + import getCardType from './_internals/getCardType' import typeCheck from './_internals/typeCheck' -const invalidAmex = (cvn, cardType) => cvn.length === 4 && cardType !== 'amex' - -const invalidNorm = (cvn, cardType) => cvn.length === 3 && cardType === 'amex' - -const match = (cvn, type) => { - if (invalidAmex(cvn, type)) { - return false - } - - if (invalidNorm(cvn, type)) { - return false - } - - return true -} - /** * @name matches * @since v2.0.0 @@ -29,25 +17,27 @@ const match = (cvn, type) => { * * @example * - * matches('333', '4111111111111111'); // => { isValid: true, match: 'card type matches cvn' } - * matches(333, 4111111111111111); // => { isValid: true, match: 'card type matches cvn' } + * matches('333', '4111111111111111') // => { isValid: true, match: 'card type matches cvn' } + * matches(333, 4111111111111111) // => { isValid: true, match: 'card type matches cvn' } * * // Assuming that amexCardNumber is defined as an American Express Credit Card Number - * matches('4444', amexCardNumber); // => { isValid: true, match: 'card type matches cvn' } - * matches(4444, amexCardNumber); // => { isValid: true, match: 'card type matches cvn' } + * matches('4444', amexCardNumber) // => { isValid: true, match: 'card type matches cvn' } + * matches(4444, amexCardNumber) // => { isValid: true, match: 'card type matches cvn' } * - * matches('4444', '4111111111111111'); // => { isValid: false, match: 'cvn does not match card type' } - * matches(4444, 4111111111111111); // => { isValid: false, match: 'cvn does not match card type' } + * matches('4444', '4111111111111111') // => { isValid: false, match: 'cvn does not match card type' } + * matches(4444, 4111111111111111) // => { isValid: false, match: 'cvn does not match card type' } */ export default (cvn, card) => { - if (!typeCheck(cvn) || !typeCheck(card)) { + if (or(!typeCheck(cvn), !typeCheck(card))) { throw new TypeError('cvn and card number should be string or number types') } - const matches = match(String(cvn).replace(/\W/g, ''), getCardType(String(card).replace(/\W/g, ''))) + const cvnLen = String(cvn).replace(/\D/g, '').length + const cardType = getCardType(String(card).replace(/\D/g, '')) + const isValid = not(or(and(cvnLen === 4, cardType !== 'amex'), and(cvnLen === 3, cardType === 'amex'))) return { - isValid: matches, - match: !matches ? 'cvn does not match card type' : 'card type matches cvn' + isValid, + match: !isValid ? 'cvn does not match card type' : 'card type matches cvn' } } From 240ac51e484ef0b5b54da198aaa4d7945d6048f4 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:15:30 -0400 Subject: [PATCH 06/21] Improved luhn algorithm and code tweaks --- src/number.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/number.js b/src/number.js index c5f1ef3..ca334a1 100644 --- a/src/number.js +++ b/src/number.js @@ -2,6 +2,10 @@ import getCardType from './_internals/getCardType' import typeCheck from './_internals/typeCheck' const luhnChk = value => { + if (/[^0-9-\s]+/.test(value)) { + return false + } + const numArr = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9] let len = value.length let bit = 1 @@ -10,7 +14,8 @@ const luhnChk = value => { while (len) { num = parseInt(value.charAt(--len), 10) - sum += (bit ^= 1) ? numArr[num] : num + bit ^= 1 + sum += bit ? numArr[num] : num } return sum && sum % 10 === 0 @@ -26,22 +31,22 @@ const luhnChk = value => { * @return {Object} An object containing a isValid boolean and some info * * @example - * number('4111111111111111'); // => { isValid: true, cardType: 'visa' } - * number(4111111111111111); // => { isValid: true, cardType: 'visa' } - * number('33222123'); // => { isValid: false, cardType: 'Invalid Card Number' } - * number(33222123); // => { isValid: false, cardType: 'Invalid Card Number' } + * number('4111111111111111') // => { isValid: true, cardType: 'visa' } + * number(4111111111111111) // => { isValid: true, cardType: 'visa' } + * number('33222123') // => { isValid: false, cardType: 'Invalid Card Number' } + * number(33222123) // => { isValid: false, cardType: 'Invalid Card Number' } */ const cNumber = card => { if (!typeCheck(card)) { throw new TypeError('number should be a string or number type') } - const sanitizedNumber = String(card).replace(/\W/g, '') - const valid = Boolean(luhnChk(sanitizedNumber)) + const sanitized = String(card).replace(/\D/g, '') + const isValid = Boolean(luhnChk(sanitized)) return { - isValid: valid, - cardType: valid ? getCardType(sanitizedNumber) : 'Invalid Card Number' + isValid, + cardType: isValid ? getCardType(sanitized) : 'Invalid Card Number' } } From b9a4b8f6d754fa0e99135d62960c1d12df34e73e Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:16:16 -0400 Subject: [PATCH 07/21] Improved primary validation function, more performant layout --- src/validate.js | 45 ++++++++++++++------------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/src/validate.js b/src/validate.js index c187209..c4d3885 100644 --- a/src/validate.js +++ b/src/validate.js @@ -1,38 +1,14 @@ +import assign from 'kyanite/assign' +import every from 'kyanite/every' +import type from 'kyanite/type' + import validCVN from './cvn' import validDate from './expired' import validMatch from './matches' import validNumber from './number' -// Builds out our nice readable object -const validation = ({ number, cvn, date }) => { - const validationResults = [ - validNumber(number), - validCVN(cvn), - validDate(date), - validMatch(cvn, number) - ] - let count = 0 - - const results = validationResults.reduce((acc, r) => { - const keys = Object.keys(r) - const currKey = keys[keys.length - 1] - - if (!r.isValid) { - count++ - } - - acc[currKey] = r[currKey] - - return acc - }, {}) - - results.isValid = count === 0 - - return results -} - /** - * @name validate + * @name simpleCard * @since v2.0.0 * @category Function * @description Validates a credit card object comparing and validating each piece of data on the card passed in @@ -53,11 +29,18 @@ const validation = ({ number, cvn, date }) => { }); // => { isValid: false, cardType: 'visa', cvnType: 'norm', expired: 'Not Expired', info: 'CVN does not match the found card type' } */ const simpleCard = card => { - if (Object.prototype.toString.call(card) !== '[object Object]') { + if (type(card) !== 'Object') { throw new TypeError('Must send full card object to run full validation') } - return validation(card) + const validationResults = [ + validNumber(card.number), + validCVN(card.cvn), + validDate(card.date), + validMatch(card.cvn, card.number) + ] + + return assign(...validationResults, { isValid: every(x => x.isValid, validationResults) }) } export default simpleCard From 39ee2128478365d9aa93a746cf94def521801827 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:17:29 -0400 Subject: [PATCH 08/21] Converted typecheck to use kyanite --- src/_internals/typeCheck.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/_internals/typeCheck.js b/src/_internals/typeCheck.js index b9912e1..f1ba905 100644 --- a/src/_internals/typeCheck.js +++ b/src/_internals/typeCheck.js @@ -1,2 +1,5 @@ +import or from 'kyanite/or' +import type from 'kyanite/type' + // Type check for our passed in Data -export default x => typeof x === 'string' || typeof x === 'number' +export default x => or(type(x) === 'String', type(x) === 'Number') From bc5368b6fbdf679e9b2286805e87aa3f8875728f Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:17:57 -0400 Subject: [PATCH 09/21] Re wrote getCardType with Kyanite and optimized code --- src/_internals/getCardType.js | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/src/_internals/getCardType.js b/src/_internals/getCardType.js index 1c28165..e014325 100644 --- a/src/_internals/getCardType.js +++ b/src/_internals/getCardType.js @@ -1,29 +1,17 @@ -// Create a range from a to b based on the values provided -const range = (from, to) => { - const result = [] - let i = from - - for (i; i < to; i++) { - result.push(i) - } - - return result -} +import find from 'kyanite/find' +import range from 'kyanite/range' +import some from 'kyanite/some' // Our function that goes through our number and tries to find the type it belongs to export default ccNumber => { const types = { amex: [34, 37], - discover: [6011, ...range(622126, 622925), ...range(644, 649), 65], - master: range(50, 55), + // 6011, 622126-622925, 644-649, 65 + discover: [6011, ...range(622126, 622926), ...range(644, 650), 65], + // 50 - 55 + master: range(50, 56), visa: [4] } - for (const cardType in types) { - const [found] = types[cardType].filter(n => new RegExp(`^${n}`).test(ccNumber)) - - if (found) { - return cardType - } - } + return find(k => some(n => new RegExp(`^${n}`).test(ccNumber), types[k]), Object.keys(types)) } From f97dda0c2d552a311fa59940e054f245c75e6e14 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:20:15 -0400 Subject: [PATCH 10/21] Changelog additions for v2.2.0 --- changelog.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/changelog.md b/changelog.md index 4238792..f7095d3 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,30 @@ # Changelog +## v2.2.0 + +## New + +- Added unit tests for internal functions + +## Improved + +- Added my Kyanite Library to make use of utilities +- Fixed current linter issues +- Removed slow `for in` loop for getting the card type +- Made expired functionality no longer statically use `20` if only 2 digits are passed in for a year +- Heavy optimizations to `cvn` functionality + - Removed unneeded processing + - Cleaned up code base + - Removed unneeded code +- Optimizations to `match` functionality +- Tweaked Luhn Algorithm for easier catch on non-number cards +- Code optimizations within the number validation function +- Re wrote card type functionality from the ground up, improving performance +- Rebuilt validation flow taking advantage of the Kyanite library +- Re structured the flow of the expired functionality +- Updated all dev dependencies +- Better sanitization of data, cleaning up non-digits from data strings + ## v2.1.2 - Hot fix for documentation bug From 901e85fece8edfaafae36b7722a6d1ad4ce99019 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:33:40 -0400 Subject: [PATCH 11/21] Add Kyanite to rollup configs --- rollup.config.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- rollup.split.js | 24 +++++++++++++++++++++++- 2 files changed, 69 insertions(+), 3 deletions(-) diff --git a/rollup.config.js b/rollup.config.js index 22d21a5..79aca58 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -10,10 +10,32 @@ export default [{ uglify(), filesize() ], + external: [ + 'kyanite/type', + 'kyanite/and', + 'kyanite/not', + 'kyanite/or', + 'kyanite/assign', + 'kyanite/every', + 'kyanite/find', + 'kyanite/range', + 'kyanite/some' + ], output: { file: 'dist/simple-card.min.js', format: 'umd', - name: 'simpleCard' + name: 'simpleCard', + globals: { + 'kyanite/type': 'type', + 'kyanite/and': 'and', + 'kyanite/not': 'not', + 'kyanite/or': 'or', + 'kyanite/assign': 'assign', + 'kyanite/every': 'every', + 'kyanite/find': 'find', + 'kyanite/range': 'range', + 'kyanite/some': 'some' + } } }, { input: './src/index.js', @@ -22,9 +44,31 @@ export default [{ cleanup(), filesize() ], + external: [ + 'kyanite/type', + 'kyanite/and', + 'kyanite/not', + 'kyanite/or', + 'kyanite/assign', + 'kyanite/every', + 'kyanite/find', + 'kyanite/range', + 'kyanite/some' + ], output: { file: 'dist/simple-card.js', format: 'umd', - name: 'simpleCard' + name: 'simpleCard', + globals: { + 'kyanite/type': 'type', + 'kyanite/and': 'and', + 'kyanite/not': 'not', + 'kyanite/or': 'or', + 'kyanite/assign': 'assign', + 'kyanite/every': 'every', + 'kyanite/find': 'find', + 'kyanite/range': 'range', + 'kyanite/some': 'some' + } } }] diff --git a/rollup.split.js b/rollup.split.js index 4a8b6d0..98042fb 100644 --- a/rollup.split.js +++ b/rollup.split.js @@ -18,11 +18,33 @@ const buildEntry = () => { uglify(), filesize() ], + external: [ + 'kyanite/type', + 'kyanite/and', + 'kyanite/not', + 'kyanite/or', + 'kyanite/assign', + 'kyanite/every', + 'kyanite/find', + 'kyanite/range', + 'kyanite/some' + ], output: { dir: './', file: `${name}.js`, format: 'umd', - name: name + name: name, + globals: { + 'kyanite/type': 'type', + 'kyanite/and': 'and', + 'kyanite/not': 'not', + 'kyanite/or': 'or', + 'kyanite/assign': 'assign', + 'kyanite/every': 'every', + 'kyanite/find': 'find', + 'kyanite/range': 'range', + 'kyanite/some': 'some' + } } } From 3d952b459ea6074dc254a222777b9409f67aa898 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:34:00 -0400 Subject: [PATCH 12/21] Remove stage-2 babel --- .babelrc | 6 ------ package.json | 1 - 2 files changed, 7 deletions(-) diff --git a/.babelrc b/.babelrc index e5fc92e..c973ed9 100644 --- a/.babelrc +++ b/.babelrc @@ -11,12 +11,6 @@ }, "modules": false } - ], - [ - "@babel/preset-stage-2", - { - "decoratorsLegacy": true - } ] ], "exclude": "node_modules/**" diff --git a/package.json b/package.json index 6a74eeb..f51534e 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,6 @@ "devDependencies": { "@babel/core": "7.0.0", "@babel/preset-env": "7.0.0", - "@babel/preset-stage-2": "7.0.0", "coveralls": "3.0.2", "del": "3.0.0", "esm": "3.0.82", From db24213caba3fab03f92180aab910ba422a13729 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:40:18 -0400 Subject: [PATCH 13/21] Tweak assign --- src/validate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/validate.js b/src/validate.js index c4d3885..091c860 100644 --- a/src/validate.js +++ b/src/validate.js @@ -40,7 +40,7 @@ const simpleCard = card => { validMatch(card.cvn, card.number) ] - return assign(...validationResults, { isValid: every(x => x.isValid, validationResults) }) + return assign({}, ...validationResults, { isValid: every(x => x.isValid, validationResults) }) } export default simpleCard From 535a859b2c94b66036e995e2be24430ed6f223de Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:41:12 -0400 Subject: [PATCH 14/21] v2.2.0 build files --- dist/simple-card.js | 189 ++++++++++++++++------------------------ dist/simple-card.min.js | 2 +- info.json | 2 +- package-lock.json | 6 -- package.json | 2 +- 5 files changed, 77 insertions(+), 124 deletions(-) diff --git a/dist/simple-card.js b/dist/simple-card.js index 5c54d69..2ad6707 100644 --- a/dist/simple-card.js +++ b/dist/simple-card.js @@ -1,69 +1,39 @@ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.simpleCard = {}))); -}(this, (function (exports) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('kyanite/or'), require('kyanite/type'), require('kyanite/find'), require('kyanite/range'), require('kyanite/some'), require('kyanite/and'), require('kyanite/not'), require('kyanite/assign'), require('kyanite/every')) : + typeof define === 'function' && define.amd ? define(['exports', 'kyanite/or', 'kyanite/type', 'kyanite/find', 'kyanite/range', 'kyanite/some', 'kyanite/and', 'kyanite/not', 'kyanite/assign', 'kyanite/every'], factory) : + (factory((global.simpleCard = {}),global.or,global.type,global.find,global.range,global.some,global.and,global.not,global.assign,global.every)); +}(this, (function (exports,or,type,find,range,some,and,not,assign,every) { 'use strict'; + + or = or && or.hasOwnProperty('default') ? or['default'] : or; + type = type && type.hasOwnProperty('default') ? type['default'] : type; + find = find && find.hasOwnProperty('default') ? find['default'] : find; + range = range && range.hasOwnProperty('default') ? range['default'] : range; + some = some && some.hasOwnProperty('default') ? some['default'] : some; + and = and && and.hasOwnProperty('default') ? and['default'] : and; + not = not && not.hasOwnProperty('default') ? not['default'] : not; + assign = assign && assign.hasOwnProperty('default') ? assign['default'] : assign; + every = every && every.hasOwnProperty('default') ? every['default'] : every; var typeCheck = (function (x) { - return typeof x === 'string' || typeof x === 'number'; + return or(type(x) === 'String', type(x) === 'Number'); }); - var getCvnType = function getCvnType(cvn) { - var len = cvn.length; - if (len === 3) { - return 'norm'; - } - if (len === 4) { - return 'amex'; - } - return false; - }; var validCVN = (function (cvnCode) { if (!typeCheck(cvnCode)) { throw new TypeError('cvn should be a string or number type'); } - var results = { - isValid: false, - cvnType: 'Invalid CVN Code' - }; - var sanitizedCVN = String(cvnCode).replace(/\D/g, ''); - var type = getCvnType(sanitizedCVN); - if (type) { - return { - isValid: true, - cvnType: type - }; + var sanitized = String(cvnCode).replace(/\D/g, ''); + var type$$1 = 'Invalid CVN Code'; + if (sanitized.length === 3) { + type$$1 = 'norm'; + } else if (sanitized.length === 4) { + type$$1 = 'amex'; } - return results; - }); - - var fullYear = function fullYear(year) { - if (year.length === 2) { - return "20".concat(year); - } - return year; - }; - var generateDate = function generateDate() { - var dateObj = new Date(); - return new Date("".concat(dateObj.getMonth() + 1, "/1/").concat(dateObj.getFullYear())); - }; - var normalizeDate = function normalizeDate(date) { - var cleanDate = date.replace(/\s/g, ''); - var splitDate = cleanDate.split(/\W/g); - return "".concat(splitDate[0], "/1/").concat(fullYear(splitDate[1])); - }; - var expired = function expired(date) { - if (typeof date !== 'string') { - throw new TypeError('date should be a string type'); - } - var currDate = generateDate(); - var expireDate = new Date(normalizeDate(date)); - var isExpired = !isNaN(expireDate) ? currDate > expireDate : true; return { - isValid: !isExpired, - isExpired: isExpired + isValid: type$$1 !== 'Invalid CVN Code', + cvnType: type$$1 }; - }; + }); function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); @@ -123,60 +93,61 @@ throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - var range = function range(from, to) { - var result = []; - var i = from; - for (i; i < to; i++) { - result.push(i); + var fullYear = function fullYear(year) { + if (year.length === 2) { + return "".concat(String(new Date().getFullYear()).slice(0, 2)).concat(year); } - return result; + return year; }; + var expired = function expired(date) { + if (type(date) !== 'String') { + throw new TypeError('date should be a string type'); + } + var dateObj = new Date(); + var _date$replace$split = date.replace(/\s/g, '').split(/\W/g), + _date$replace$split2 = _slicedToArray(_date$replace$split, 2), + month = _date$replace$split2[0], + year = _date$replace$split2[1]; + var currDate = new Date("".concat(dateObj.getMonth() + 1, "/1/").concat(dateObj.getFullYear())); + var expireDate = new Date("".concat(month, "/1/").concat(fullYear(year))); + var isExpired = !isNaN(expireDate) ? currDate > expireDate : true; + return { + isValid: !isExpired, + isExpired: isExpired + }; + }; + var getCardType = (function (ccNumber) { var types = { amex: [34, 37], - discover: [6011].concat(_toConsumableArray(range(622126, 622925)), _toConsumableArray(range(644, 649)), [65]), - master: range(50, 55), + discover: [6011].concat(_toConsumableArray(range(622126, 622926)), _toConsumableArray(range(644, 650)), [65]), + master: range(50, 56), visa: [4] }; - for (var cardType in types) { - var _types$cardType$filte = types[cardType].filter(function (n) { + return find(function (k) { + return some(function (n) { return new RegExp("^".concat(n)).test(ccNumber); - }), - _types$cardType$filte2 = _slicedToArray(_types$cardType$filte, 1), - found = _types$cardType$filte2[0]; - if (found) { - return cardType; - } - } + }, types[k]); + }, Object.keys(types)); }); - var invalidAmex = function invalidAmex(cvn, cardType) { - return cvn.length === 4 && cardType !== 'amex'; - }; - var invalidNorm = function invalidNorm(cvn, cardType) { - return cvn.length === 3 && cardType === 'amex'; - }; - var match = function match(cvn, type) { - if (invalidAmex(cvn, type)) { - return false; - } - if (invalidNorm(cvn, type)) { - return false; - } - return true; - }; var validMatch = (function (cvn, card) { - if (!typeCheck(cvn) || !typeCheck(card)) { + if (or(!typeCheck(cvn), !typeCheck(card))) { throw new TypeError('cvn and card number should be string or number types'); } - var matches = match(String(cvn).replace(/\W/g, ''), getCardType(String(card).replace(/\W/g, ''))); + var cvnLen = String(cvn).replace(/\D/g, '').length; + var cardType = getCardType(String(card).replace(/\D/g, '')); + var isValid = not(or(and(cvnLen === 4, cardType !== 'amex'), and(cvnLen === 3, cardType === 'amex'))); return { - isValid: matches, - match: !matches ? 'cvn does not match card type' : 'card type matches cvn' + isValid: isValid, + match: !isValid ? 'cvn does not match card type' : 'card type matches cvn' }; }); var luhnChk = function luhnChk(value) { + if (/[^0-9-\s]+/.test(value)) { + return false; + } var numArr = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]; var len = value.length; var bit = 1; @@ -184,7 +155,8 @@ var num = 0; while (len) { num = parseInt(value.charAt(--len), 10); - sum += (bit ^= 1) ? numArr[num] : num; + bit ^= 1; + sum += bit ? numArr[num] : num; } return sum && sum % 10 === 0; }; @@ -192,37 +164,24 @@ if (!typeCheck(card)) { throw new TypeError('number should be a string or number type'); } - var sanitizedNumber = String(card).replace(/\W/g, ''); - var valid = Boolean(luhnChk(sanitizedNumber)); + var sanitized = String(card).replace(/\D/g, ''); + var isValid = Boolean(luhnChk(sanitized)); return { - isValid: valid, - cardType: valid ? getCardType(sanitizedNumber) : 'Invalid Card Number' + isValid: isValid, + cardType: isValid ? getCardType(sanitized) : 'Invalid Card Number' }; }; - var validation = function validation(_ref) { - var number = _ref.number, - cvn = _ref.cvn, - date = _ref.date; - var validationResults = [cNumber(number), validCVN(cvn), expired(date), validMatch(cvn, number)]; - var count = 0; - var results = validationResults.reduce(function (acc, r) { - var keys = Object.keys(r); - var currKey = keys[keys.length - 1]; - if (!r.isValid) { - count++; - } - acc[currKey] = r[currKey]; - return acc; - }, {}); - results.isValid = count === 0; - return results; - }; var simpleCard = function simpleCard(card) { - if (Object.prototype.toString.call(card) !== '[object Object]') { + if (type(card) !== 'Object') { throw new TypeError('Must send full card object to run full validation'); } - return validation(card); + var validationResults = [cNumber(card.number), validCVN(card.cvn), expired(card.date), validMatch(card.cvn, card.number)]; + return assign.apply(void 0, [{}].concat(validationResults, [{ + isValid: every(function (x) { + return x.isValid; + }, validationResults) + }])); }; exports.cvn = validCVN; diff --git a/dist/simple-card.min.js b/dist/simple-card.min.js index ff4fb94..b9d8e23 100644 --- a/dist/simple-card.min.js +++ b/dist/simple-card.min.js @@ -1 +1 @@ -!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(r.simpleCard={})}(this,function(r){"use strict";var c=function(r){return"string"==typeof r||"number"==typeof r},u=function(r){if(!c(r))throw new TypeError("cvn should be a string or number type");var e,t=String(r).replace(/\D/g,""),n=3===(e=t.length)?"norm":4===e&&"amex";return n?{isValid:!0,cvnType:n}:{isValid:!1,cvnType:"Invalid CVN Code"}},l=function(r){if("string"!=typeof r)throw new TypeError("date should be a string type");var e,t,n,o=(e=new Date,new Date("".concat(e.getMonth()+1,"/1/").concat(e.getFullYear()))),a=new Date((n=r.replace(/\s/g,"").split(/\W/g),"".concat(n[0],"/1/").concat(2===(t=n[1]).length?"20".concat(t):t))),i=!!isNaN(a)||a { isValid: true, cvnType: 'norm' }\rcvn(333); // => { isValid: true, cvnType: 'norm' }\rcvn('4444'); // => { isValid: true, cvnType: 'amex' }\rcvn(4444); // => { isValid: true, cvnType: 'amex' }\rcvn('55555'); // => { isValid: false, cvnType: 'Invalid CVN Code' }\rcvn(55555); // => { isValid: false, cvnType: 'Invalid CVN Code' }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String","Number"]},"description":"The string cvn we want to validate","name":"cvnCode"}],"syntax":"cvn(cvnCode)","usage":{"commonjs":{"title":"CommonJs","code":"const cvn = require('simple-card/cvn')"},"standard":{"title":"Standard","code":"import cvn from 'simple-card/cvn'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"expired","desc":"Validates that the string date passed in is indeed a valid date and not an old one","examples":["// Assuming \"currDate\" is a variable that holds the current date in a XX/XX format\rexpired(currDate); // => { isValid: true, isExpired: false }\rexpired('01/18'); // => { isValid: false, isExpired: true }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String"]},"description":"The string date we want to validate","name":"date"}],"syntax":"expired(date)","usage":{"commonjs":{"title":"CommonJs","code":"const expired = require('simple-card/expired')"},"standard":{"title":"Standard","code":"import expired from 'simple-card/expired'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"matches","desc":"Validates that the card type (generated from the card number) matches and is valid with the cvn provided","examples":["matches('333', '4111111111111111'); // => { isValid: true, match: 'card type matches cvn' }\rmatches(333, 4111111111111111); // => { isValid: true, match: 'card type matches cvn' }\r\r// Assuming that amexCardNumber is defined as an American Express Credit Card Number\rmatches('4444', amexCardNumber); // => { isValid: true, match: 'card type matches cvn' }\rmatches(4444, amexCardNumber); // => { isValid: true, match: 'card type matches cvn' }\r\rmatches('4444', '4111111111111111'); // => { isValid: false, match: 'cvn does not match card type' }\rmatches(4444, 4111111111111111); // => { isValid: false, match: 'cvn does not match card type' }"],"returns":[{"type":{"names":["Boolean"]},"description":"A boolean based on if the match is valid or not"}],"params":[{"type":{"names":["String","Number"]},"description":"The string cvn we want to validate","name":"cvn"},{"type":{"names":["String","Number"]},"description":"The string card we want to validate with","name":"card"}],"syntax":"matches(cvn, card)","usage":{"commonjs":{"title":"CommonJs","code":"const matches = require('simple-card/matches')"},"standard":{"title":"Standard","code":"import matches from 'simple-card/matches'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"number","desc":"Validates that the card number is an actual valid number with a luhn algorithm. As well as finds the cards type","examples":["number('4111111111111111'); // => { isValid: true, cardType: 'visa' }\rnumber(4111111111111111); // => { isValid: true, cardType: 'visa' }\rnumber('33222123'); // => { isValid: false, cardType: 'Invalid Card Number' }\rnumber(33222123); // => { isValid: false, cardType: 'Invalid Card Number' }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String","Number"]},"description":"The string card we want to validate","name":"card"}],"syntax":"number(card)","usage":{"commonjs":{"title":"CommonJs","code":"const number = require('simple-card/number')"},"standard":{"title":"Standard","code":"import number from 'simple-card/number'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"validate","desc":"Validates a credit card object comparing and validating each piece of data on the card passed in","examples":["const test = validate({\r\n number: '4111111111111111',\r\n cvn: '333',\r\n date: '09/20'\r\n }); // => { isValid: true, cardType: 'visa', cvnType: 'norm', expired: false }\r\n\r\n validate({\r\n number: '4111111111111111',\r\n cvn: '3432',\r\n date: currentDate // A simple var which is a string for the current date\r\n }); // => { isValid: false, cardType: 'visa', cvnType: 'norm', expired: 'Not Expired', info: 'CVN does not match the found card type' }"],"returns":[{"type":{"names":["Object"]},"description":"Returns an object of information about the test and whether or not it passed"}],"params":[{"type":{"names":["Object"]},"description":"The card Object that we wish to be validated","name":"card"}],"syntax":"validate(card)","usage":{"commonjs":{"title":"CommonJs","code":"const validate = require('simple-card/validate')"},"standard":{"title":"Standard","code":"import validate from 'simple-card/validate'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}}]} \ No newline at end of file +{"name":"simple-card","version":"2.1.2","description":"A simple plug and play credit card validation library that uses the luhn algorithm","docs":[{"since":"v2.0.0","category":"Function","title":"cvn","desc":"Validates that the string cvn passed in is a valid cvn number","examples":["cvn('333') // => { isValid: true, cvnType: 'norm' }\rcvn(333) // => { isValid: true, cvnType: 'norm' }\rcvn('4444') // => { isValid: true, cvnType: 'amex' }\rcvn(4444) // => { isValid: true, cvnType: 'amex' }\rcvn('55555') // => { isValid: false, cvnType: 'Invalid CVN Code' }\rcvn(55555) // => { isValid: false, cvnType: 'Invalid CVN Code' }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String","Number"]},"description":"The string cvn we want to validate","name":"cvnCode"}],"syntax":"cvn(cvnCode)","usage":{"commonjs":{"title":"CommonJs","code":"const cvn = require('simple-card/cvn')"},"standard":{"title":"Standard","code":"import cvn from 'simple-card/cvn'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"expired","desc":"Validates that the string date passed in is indeed a valid date and not an old one","examples":["// Assuming \"currDate\" is a variable that holds the current date in a XX/XX format\rexpired(currDate) // => { isValid: true, isExpired: false }\rexpired('01/18') // => { isValid: false, isExpired: true }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String"]},"description":"The string date we want to validate","name":"date"}],"syntax":"expired(date)","usage":{"commonjs":{"title":"CommonJs","code":"const expired = require('simple-card/expired')"},"standard":{"title":"Standard","code":"import expired from 'simple-card/expired'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"matches","desc":"Validates that the card type (generated from the card number) matches and is valid with the cvn provided","examples":["matches('333', '4111111111111111') // => { isValid: true, match: 'card type matches cvn' }\rmatches(333, 4111111111111111) // => { isValid: true, match: 'card type matches cvn' }\r\r// Assuming that amexCardNumber is defined as an American Express Credit Card Number\rmatches('4444', amexCardNumber) // => { isValid: true, match: 'card type matches cvn' }\rmatches(4444, amexCardNumber) // => { isValid: true, match: 'card type matches cvn' }\r\rmatches('4444', '4111111111111111') // => { isValid: false, match: 'cvn does not match card type' }\rmatches(4444, 4111111111111111) // => { isValid: false, match: 'cvn does not match card type' }"],"returns":[{"type":{"names":["Boolean"]},"description":"A boolean based on if the match is valid or not"}],"params":[{"type":{"names":["String","Number"]},"description":"The string cvn we want to validate","name":"cvn"},{"type":{"names":["String","Number"]},"description":"The string card we want to validate with","name":"card"}],"syntax":"matches(cvn, card)","usage":{"commonjs":{"title":"CommonJs","code":"const matches = require('simple-card/matches')"},"standard":{"title":"Standard","code":"import matches from 'simple-card/matches'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"number","desc":"Validates that the card number is an actual valid number with a luhn algorithm. As well as finds the cards type","examples":["number('4111111111111111') // => { isValid: true, cardType: 'visa' }\rnumber(4111111111111111) // => { isValid: true, cardType: 'visa' }\rnumber('33222123') // => { isValid: false, cardType: 'Invalid Card Number' }\rnumber(33222123) // => { isValid: false, cardType: 'Invalid Card Number' }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String","Number"]},"description":"The string card we want to validate","name":"card"}],"syntax":"number(card)","usage":{"commonjs":{"title":"CommonJs","code":"const number = require('simple-card/number')"},"standard":{"title":"Standard","code":"import number from 'simple-card/number'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"simpleCard","desc":"Validates a credit card object comparing and validating each piece of data on the card passed in","examples":["const test = validate({\r\n number: '4111111111111111',\r\n cvn: '333',\r\n date: '09/20'\r\n }); // => { isValid: true, cardType: 'visa', cvnType: 'norm', expired: false }\r\n\r\n validate({\r\n number: '4111111111111111',\r\n cvn: '3432',\r\n date: currentDate // A simple var which is a string for the current date\r\n }); // => { isValid: false, cardType: 'visa', cvnType: 'norm', expired: 'Not Expired', info: 'CVN does not match the found card type' }"],"returns":[{"type":{"names":["Object"]},"description":"Returns an object of information about the test and whether or not it passed"}],"params":[{"type":{"names":["Object"]},"description":"The card Object that we wish to be validated","name":"card"}],"syntax":"simpleCard(card)","usage":{"commonjs":{"title":"CommonJs","code":"const simpleCard = require('simple-card/simpleCard')"},"standard":{"title":"Standard","code":"import simpleCard from 'simple-card/simpleCard'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}}]} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 05a843c..6607e63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -685,12 +685,6 @@ "semver": "^5.3.0" } }, - "@babel/preset-stage-2": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/preset-stage-2/-/preset-stage-2-7.0.0.tgz", - "integrity": "sha512-A8ia2Wus0OAP6hh28ZgPSCBJEX3Jnql3kg9di/I+Lmg1gbJXgDZBrHr/UGZXl20Vi1lXgMuUq8c8J899KFr5gA==", - "dev": true - }, "@babel/template": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", diff --git a/package.json b/package.json index f51534e..f77ebc4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simple-card", - "version": "2.1.2", + "version": "2.2.0", "description": "A simple plug and play credit card validation library that uses the luhn algorithm", "main": "dist/simple-card.min.js", "directories": { From 02e52213336658c30812f400df04a0abfe9a8025 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:42:41 -0400 Subject: [PATCH 15/21] fix validation docs --- src/validate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/validate.js b/src/validate.js index 091c860..f9e701a 100644 --- a/src/validate.js +++ b/src/validate.js @@ -8,7 +8,7 @@ import validMatch from './matches' import validNumber from './number' /** - * @name simpleCard + * @name validate * @since v2.0.0 * @category Function * @description Validates a credit card object comparing and validating each piece of data on the card passed in From 3da77fb86027a237c2eecc38f689b3827cda4683 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:49:16 -0400 Subject: [PATCH 16/21] Fix up README --- README.md | 178 ++++++------------------------------------------------ 1 file changed, 19 insertions(+), 159 deletions(-) diff --git a/README.md b/README.md index c3e0e9e..38394f0 100644 --- a/README.md +++ b/README.md @@ -42,174 +42,34 @@ Browser You can find most of the documentation for simple card here: https://www.dusty.codes/simple-card -## Methods +## Modular -As of v2.0.0 simple-card has been broken down to functions that can be used individually. +Simple Card is completely modular which means each piece of functionality can be imported by itself directly, or with destructuring. -All methods sanatize the strings (Remove whitespace or special characters like dashes) - -### validate(card) - -This is the primary validation function which runs the entire process of validating if the card number and cvn are valid, making sure it isn't expired, and making sure the card type matches the cvn provided. - -#### Arguments - -- `card` - `Object`: The card object to validate - - `card.number` - `String|Number`: The credit card number - - `card.cvn` - `String|Number`: The credit card CVN/Security Code - - `card.date` - `String`: The credit card expiration date - -#### Return - -Returns an object with an `isValid` and several other info props with card information - -- `isValid` - `Boolean`: The Boolean whether or not the value passed the validation -- `cardType` - `String`: The found card type -- `cvnType` - `String`: The found CVN type -- `isExpired` - `Boolean`: Boolean which depends on if the card was expired or not -- `match` - `String`: A simple string which states if the cvn matched the card number or not - -#### Usage +Example: ```js -import validate from 'simple-card/validate'; - -const cardObj = { - number: '4111111111111111', - cvn: '342', - date: currentDate // A simple var which is a string for the current date -}; - -validate(cardObj); // => { isValid: true, cardType: 'visa', cvnType: 'norm', expired: 'Not Expired', info: '' } +import validate from 'simple-card/validate' +import num from 'simple-card/number' +import cvn from 'simple-card/cvn' +import expired from 'simple-card/expired' +import matches from 'simple-card/matches' -const badCardObj = { - number: '4111111111111111', - cvn: '3432', - date: currentDate // A simple var which is a string for the current date -}; - -validate(badCardObj); // => { isValid: false, cardType: 'visa', cvnType: 'norm', expired: 'Not Expired', info: 'CVN does not match the found card type' } +// Or with destructuring +import { validate, number, cvn, matches, expired } from 'simple-card' ``` -### number(cardNum) - -This is the credit card number validation function, uses a luhn algorithm to strictly validate the number - -#### Arguments - -- `cardNum` - `String|Number`: The credit card number to validate - -#### Return - -Returns an object with an `isValid` prop and a `cardType` prop. - -- `isValid` - `Boolean`: The Boolean whether or not the value passed the validation -- `cardType` - `String`: The info property is usually what comes back as the Card type - - Possible Values: - - `'visa'`: The card number is a `Visa` type of number - - `'discover'`: The card number is a `Discover` type of number - - `'master'`: The card number is a `Master Card` type of number - - `'amex'`: The number is an `American Express` type of number - - `'Invalid Card Number'`: The provided Number failed validation - -#### Usage - -```javascript -import number from 'simple-card/number'; - -number('4111111111111111'); // => { isValid: true, cardType: 'visa' } -number(4111111111111111); // => { isValid: true, cardType: 'visa' } -number('33222123'); // => { isValid: false, cardType: 'Invalid Card Number' } -number(33222123); // => { isValid: false, cardType: 'Invalid Card Number' } -``` - -### cvn(cardCvn) - -This is the cvn or security code validation function. Its job essentially just makes sure its a correct length and doesn't contain any incorrect characters - -#### Arguments - -- `cardCVN` - `String|Number`: The CVN or security code to validate - -#### Return +You can then call each function individually. -Returns an object with an `isValid` prop and a `cvnType` prop. +This also works with `commonjs` you just need to point directly to the file you want -- `isValid` - `Boolean`: The Boolean whether or not the value passed the validation -- `cvnType` - `String`: The info property is usually what comes back as the CVN type - - Possible Values: - - `'norm'`: normal 3 digit code - - `'amex'`: amex 4 digit code - - `'Invalid CVN Code'`: The provided CVN failed validation +**NOTE:** In order to use `validate` you need to pass a full card object to it like so: -#### Usage - -```javascript -import cvn from 'simple-card/cvn'; - -cvn('333'); // => { isValid: true, cvnType: 'norm' } -cvn(333); // => { isValid: true, cvnType: 'norm' } -cvn('4444'); // => { isValid: true, cvnType: 'amex' } -cvn(4444); // => { isValid: true, cvnType: 'amex' } -cvn('55555'); // => { isValid: false, cvnType: 'Invalid CVN Code' } -cvn(55555); // => { isValid: false, cvnType: 'Invalid CVN Code' } -``` - -### expired(date) - -This function accepts a String of the card expiration date to validate if the card is currently expired or not - -#### Arguments - -- `date` - `String`: Must be a string this is the date we wish to validate - -#### Return - -Returns an object with an `isValid` prop and a `isExpired` prop. - -- `isValid` - `Boolean`: The Boolean whether or not the value passed the validation -- `isExpired` - `Boolean`: Boolean for true if it is expired false if it isn't - -#### Usage - -```javascript -import expired from 'simple-card/expired'; - -// Assuming "currDate" is a variable that holds the current date in a XX/XX format -expired(currDate); // => { isValid: true, isExpired: false } -expired('01/18'); // => { isValid: false, isExpired: true } -``` - -### matches(cvn, cardNum) - -This function takes the cvn and card number, fetches the card type from the number and then validates that the cvn matches up with the card type. - -#### Arguments - -- `cvn` - `String|Number`: The card cvn to compare with -- `cardNum` - `String|Number`: The cards number to use to fetch the type for comparison - -#### Return - -Returns an object with an `isValid` prop and a `match` prop. - -- `isValid` - `Boolean`: The Boolean whether or not the value passed the validation -- `match` - `String`: The String reply on if the card type matches the cvn provided - - Possible Values - - `'card type matches cvn'` if the match is valid - - `'cvn does not match card type'` if the match is invalid - -#### Usage - -```javascript -import matches from 'simple-card/matches'; - -// Assuming "amexCardNumber" is a valid American Express Credit Card Number -matches('333', '4111111111111111'); // => { isValid: true, match: 'card type matches cvn' } -matches(333, 4111111111111111); // => { isValid: true, match: 'card type matches cvn' } -matches('4444', amexCardNumber); // => { isValid: true, match: 'card type matches cvn' } -matches(4444, amexCardNumber); // => { isValid: true, match: 'card type matches cvn' } -matches('4444', '4111111111111111'); // => { isValid: false, match: 'cvn does not match card type' } -matches(4444, 4111111111111111); // => { isValid: false, match: 'cvn does not match card type' } +```js +{ + number: '4111 1111 1111 1111', + cvn: '342', + date: '12/20' +} ``` From 5893a7314e24e4ff7f13ea3c8483b337627c3715 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:50:14 -0400 Subject: [PATCH 17/21] Tweak package.json with new info --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f77ebc4..7e4c9e2 100644 --- a/package.json +++ b/package.json @@ -47,12 +47,12 @@ "JS", "credit card" ], - "author": "Dustin Hershman", + "author": "Dustin Hershman ", "license": "MIT", "bugs": { "url": "https://github.com/dhershman1/simple-card/issues" }, - "homepage": "https://github.com/dhershman1/simple-card", + "homepage": "https://www.dusty.codes/documentation/simple-card", "devDependencies": { "@babel/core": "7.0.0", "@babel/preset-env": "7.0.0", From 978abbf73ad6be790abf4d6224e2f8c1853e3de6 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:52:42 -0400 Subject: [PATCH 18/21] new info build file --- info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/info.json b/info.json index 90cf291..998135c 100644 --- a/info.json +++ b/info.json @@ -1 +1 @@ -{"name":"simple-card","version":"2.1.2","description":"A simple plug and play credit card validation library that uses the luhn algorithm","docs":[{"since":"v2.0.0","category":"Function","title":"cvn","desc":"Validates that the string cvn passed in is a valid cvn number","examples":["cvn('333') // => { isValid: true, cvnType: 'norm' }\rcvn(333) // => { isValid: true, cvnType: 'norm' }\rcvn('4444') // => { isValid: true, cvnType: 'amex' }\rcvn(4444) // => { isValid: true, cvnType: 'amex' }\rcvn('55555') // => { isValid: false, cvnType: 'Invalid CVN Code' }\rcvn(55555) // => { isValid: false, cvnType: 'Invalid CVN Code' }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String","Number"]},"description":"The string cvn we want to validate","name":"cvnCode"}],"syntax":"cvn(cvnCode)","usage":{"commonjs":{"title":"CommonJs","code":"const cvn = require('simple-card/cvn')"},"standard":{"title":"Standard","code":"import cvn from 'simple-card/cvn'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"expired","desc":"Validates that the string date passed in is indeed a valid date and not an old one","examples":["// Assuming \"currDate\" is a variable that holds the current date in a XX/XX format\rexpired(currDate) // => { isValid: true, isExpired: false }\rexpired('01/18') // => { isValid: false, isExpired: true }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String"]},"description":"The string date we want to validate","name":"date"}],"syntax":"expired(date)","usage":{"commonjs":{"title":"CommonJs","code":"const expired = require('simple-card/expired')"},"standard":{"title":"Standard","code":"import expired from 'simple-card/expired'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"matches","desc":"Validates that the card type (generated from the card number) matches and is valid with the cvn provided","examples":["matches('333', '4111111111111111') // => { isValid: true, match: 'card type matches cvn' }\rmatches(333, 4111111111111111) // => { isValid: true, match: 'card type matches cvn' }\r\r// Assuming that amexCardNumber is defined as an American Express Credit Card Number\rmatches('4444', amexCardNumber) // => { isValid: true, match: 'card type matches cvn' }\rmatches(4444, amexCardNumber) // => { isValid: true, match: 'card type matches cvn' }\r\rmatches('4444', '4111111111111111') // => { isValid: false, match: 'cvn does not match card type' }\rmatches(4444, 4111111111111111) // => { isValid: false, match: 'cvn does not match card type' }"],"returns":[{"type":{"names":["Boolean"]},"description":"A boolean based on if the match is valid or not"}],"params":[{"type":{"names":["String","Number"]},"description":"The string cvn we want to validate","name":"cvn"},{"type":{"names":["String","Number"]},"description":"The string card we want to validate with","name":"card"}],"syntax":"matches(cvn, card)","usage":{"commonjs":{"title":"CommonJs","code":"const matches = require('simple-card/matches')"},"standard":{"title":"Standard","code":"import matches from 'simple-card/matches'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"number","desc":"Validates that the card number is an actual valid number with a luhn algorithm. As well as finds the cards type","examples":["number('4111111111111111') // => { isValid: true, cardType: 'visa' }\rnumber(4111111111111111) // => { isValid: true, cardType: 'visa' }\rnumber('33222123') // => { isValid: false, cardType: 'Invalid Card Number' }\rnumber(33222123) // => { isValid: false, cardType: 'Invalid Card Number' }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String","Number"]},"description":"The string card we want to validate","name":"card"}],"syntax":"number(card)","usage":{"commonjs":{"title":"CommonJs","code":"const number = require('simple-card/number')"},"standard":{"title":"Standard","code":"import number from 'simple-card/number'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"simpleCard","desc":"Validates a credit card object comparing and validating each piece of data on the card passed in","examples":["const test = validate({\r\n number: '4111111111111111',\r\n cvn: '333',\r\n date: '09/20'\r\n }); // => { isValid: true, cardType: 'visa', cvnType: 'norm', expired: false }\r\n\r\n validate({\r\n number: '4111111111111111',\r\n cvn: '3432',\r\n date: currentDate // A simple var which is a string for the current date\r\n }); // => { isValid: false, cardType: 'visa', cvnType: 'norm', expired: 'Not Expired', info: 'CVN does not match the found card type' }"],"returns":[{"type":{"names":["Object"]},"description":"Returns an object of information about the test and whether or not it passed"}],"params":[{"type":{"names":["Object"]},"description":"The card Object that we wish to be validated","name":"card"}],"syntax":"simpleCard(card)","usage":{"commonjs":{"title":"CommonJs","code":"const simpleCard = require('simple-card/simpleCard')"},"standard":{"title":"Standard","code":"import simpleCard from 'simple-card/simpleCard'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}}]} \ No newline at end of file +{"name":"simple-card","version":"2.2.0","description":"A simple plug and play credit card validation library that uses the luhn algorithm","docs":[{"since":"v2.0.0","category":"Function","title":"cvn","desc":"Validates that the string cvn passed in is a valid cvn number","examples":["cvn('333') // => { isValid: true, cvnType: 'norm' }\rcvn(333) // => { isValid: true, cvnType: 'norm' }\rcvn('4444') // => { isValid: true, cvnType: 'amex' }\rcvn(4444) // => { isValid: true, cvnType: 'amex' }\rcvn('55555') // => { isValid: false, cvnType: 'Invalid CVN Code' }\rcvn(55555) // => { isValid: false, cvnType: 'Invalid CVN Code' }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String","Number"]},"description":"The string cvn we want to validate","name":"cvnCode"}],"syntax":"cvn(cvnCode)","usage":{"commonjs":{"title":"CommonJs","code":"const cvn = require('simple-card/cvn')"},"standard":{"title":"Standard","code":"import cvn from 'simple-card/cvn'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"expired","desc":"Validates that the string date passed in is indeed a valid date and not an old one","examples":["// Assuming \"currDate\" is a variable that holds the current date in a XX/XX format\rexpired(currDate) // => { isValid: true, isExpired: false }\rexpired('01/18') // => { isValid: false, isExpired: true }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String"]},"description":"The string date we want to validate","name":"date"}],"syntax":"expired(date)","usage":{"commonjs":{"title":"CommonJs","code":"const expired = require('simple-card/expired')"},"standard":{"title":"Standard","code":"import expired from 'simple-card/expired'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"matches","desc":"Validates that the card type (generated from the card number) matches and is valid with the cvn provided","examples":["matches('333', '4111111111111111') // => { isValid: true, match: 'card type matches cvn' }\rmatches(333, 4111111111111111) // => { isValid: true, match: 'card type matches cvn' }\r\r// Assuming that amexCardNumber is defined as an American Express Credit Card Number\rmatches('4444', amexCardNumber) // => { isValid: true, match: 'card type matches cvn' }\rmatches(4444, amexCardNumber) // => { isValid: true, match: 'card type matches cvn' }\r\rmatches('4444', '4111111111111111') // => { isValid: false, match: 'cvn does not match card type' }\rmatches(4444, 4111111111111111) // => { isValid: false, match: 'cvn does not match card type' }"],"returns":[{"type":{"names":["Boolean"]},"description":"A boolean based on if the match is valid or not"}],"params":[{"type":{"names":["String","Number"]},"description":"The string cvn we want to validate","name":"cvn"},{"type":{"names":["String","Number"]},"description":"The string card we want to validate with","name":"card"}],"syntax":"matches(cvn, card)","usage":{"commonjs":{"title":"CommonJs","code":"const matches = require('simple-card/matches')"},"standard":{"title":"Standard","code":"import matches from 'simple-card/matches'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"number","desc":"Validates that the card number is an actual valid number with a luhn algorithm. As well as finds the cards type","examples":["number('4111111111111111') // => { isValid: true, cardType: 'visa' }\rnumber(4111111111111111) // => { isValid: true, cardType: 'visa' }\rnumber('33222123') // => { isValid: false, cardType: 'Invalid Card Number' }\rnumber(33222123) // => { isValid: false, cardType: 'Invalid Card Number' }"],"returns":[{"type":{"names":["Object"]},"description":"An object containing a isValid boolean and some info"}],"params":[{"type":{"names":["String","Number"]},"description":"The string card we want to validate","name":"card"}],"syntax":"number(card)","usage":{"commonjs":{"title":"CommonJs","code":"const number = require('simple-card/number')"},"standard":{"title":"Standard","code":"import number from 'simple-card/number'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}},{"since":"v2.0.0","category":"Function","title":"validate","desc":"Validates a credit card object comparing and validating each piece of data on the card passed in","examples":["const test = validate({\r\n number: '4111111111111111',\r\n cvn: '333',\r\n date: '09/20'\r\n }); // => { isValid: true, cardType: 'visa', cvnType: 'norm', expired: false }\r\n\r\n validate({\r\n number: '4111111111111111',\r\n cvn: '3432',\r\n date: currentDate // A simple var which is a string for the current date\r\n }); // => { isValid: false, cardType: 'visa', cvnType: 'norm', expired: 'Not Expired', info: 'CVN does not match the found card type' }"],"returns":[{"type":{"names":["Object"]},"description":"Returns an object of information about the test and whether or not it passed"}],"params":[{"type":{"names":["Object"]},"description":"The card Object that we wish to be validated","name":"card"}],"syntax":"validate(card)","usage":{"commonjs":{"title":"CommonJs","code":"const validate = require('simple-card/validate')"},"standard":{"title":"Standard","code":"import validate from 'simple-card/validate'"},"cdn":{"title":"CDN","code":""},"browser":{"title":"Browser","code":""}}}]} \ No newline at end of file From 6f39c682f0a8d8da23a75b7b27b837db7edf7550 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:53:17 -0400 Subject: [PATCH 19/21] fix changelog headings --- changelog.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index f7095d3..0fa4b18 100644 --- a/changelog.md +++ b/changelog.md @@ -2,11 +2,11 @@ ## v2.2.0 -## New +### New - Added unit tests for internal functions -## Improved +### Improved - Added my Kyanite Library to make use of utilities - Fixed current linter issues From feba13623a8d26e3af0843f3ea66307a51da1b79 Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Wed, 5 Sep 2018 23:58:35 -0400 Subject: [PATCH 20/21] Fix coverage --- tests/number.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/number.js b/tests/number.js index 53b4386..a89ff1e 100644 --- a/tests/number.js +++ b/tests/number.js @@ -50,6 +50,14 @@ test('Throws type error when not given correct type', t => { } }) +test('Letter based card caught', t => { + const { isValid, cardType } = number('abcdefg') + + t.false(isValid) + t.is(cardType, 'Invalid Card Number') + t.end() +}) + test('Gives back string of invalid if it fails validation', t => { const { isValid, cardType } = number(4111222333444555) From 11e7e89aa971b1c936c9685def5d3d9d8c16ff6c Mon Sep 17 00:00:00 2001 From: dhershman1 Date: Thu, 6 Sep 2018 00:03:10 -0400 Subject: [PATCH 21/21] Removed un needed check of sanitized values --- package.json | 1 + src/number.js | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index 7e4c9e2..d9b5bc9 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "build:split": "rollup -c rollup.split.js", "test": "tape -r esm tests/*.js | tap-spec", "test:cov": "nyc npm test", + "cov": "nyc --reporter=html npm test", "coverage": "nyc report --reporter=text-lcov | coveralls", "lint": "standard --fix src/*.js" }, diff --git a/src/number.js b/src/number.js index ca334a1..1999755 100644 --- a/src/number.js +++ b/src/number.js @@ -2,10 +2,6 @@ import getCardType from './_internals/getCardType' import typeCheck from './_internals/typeCheck' const luhnChk = value => { - if (/[^0-9-\s]+/.test(value)) { - return false - } - const numArr = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9] let len = value.length let bit = 1