From c915699ab6121db97bb0994c86d4a3e1233c330d Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 29 May 2020 19:56:07 +0530 Subject: [PATCH 001/127] Update dependencies and resolve vulnerabilities Updated some dependencies to their newer version. Replace socket.io with ws for new server --- gulpfile.js | 4 +- package-lock.json | 1676 ++++++++++++--------------------------------- package.json | 11 +- 3 files changed, 460 insertions(+), 1231 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 88f84d7a..27fde67f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -5,8 +5,8 @@ const babel = require('gulp-babel'); const workboxBuild = require('workbox-build'); const rollup = require('gulp-better-rollup'); const svelte = require('rollup-plugin-svelte'); -const resolve = require('rollup-plugin-node-resolve'); -const commonjs = require('rollup-plugin-commonjs'); +const resolve = require('@rollup/plugin-node-resolve').default; +const commonjs = require('@rollup/plugin-commonjs'); const autoprefixer = require('gulp-autoprefixer'); /** diff --git a/package-lock.json b/package-lock.json index 7bdc3427..6c47f245 100644 --- a/package-lock.json +++ b/package-lock.json @@ -842,6 +842,89 @@ } } }, + "@rollup/plugin-commonjs": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-12.0.0.tgz", + "integrity": "sha512-8+mDQt1QUmN+4Y9D3yCG8AJNewuTSLYPJVzKKUZ+lGeQrI+bV12Tc5HCyt2WdlnG6ihIL/DPbKRJlB40DX40mw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "commondir": "^1.0.1", + "estree-walker": "^1.0.1", + "glob": "^7.1.2", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.0.0.tgz", + "integrity": "sha512-5poJCChrkVggXXND/sQ7yNqwjUNT4fP31gpRWCnSNnlXuUXTCMHT33xZrTGxgjm5Rl18MHj7iEzlCT8rYWwQSA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "deep-freeze": "^0.0.1", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + }, + "dependencies": { + "builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "@rollup/pluginutils": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.10.tgz", + "integrity": "sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -879,23 +962,18 @@ } }, "acorn": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz", - "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -985,38 +1063,6 @@ "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://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": "http://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" - } - } } }, "arr-diff": { @@ -1138,11 +1184,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -1158,11 +1199,6 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, - "assertion-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "integrity": "sha1-x/hUOP3UZrx8oWq5DIFRN5el0js=" - }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -1193,11 +1229,6 @@ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", "dev": true }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, "async-settle": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", @@ -1301,9 +1332,9 @@ "dev": true }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", "dev": true }, "babel-core": { @@ -1615,11 +1646,6 @@ "now-and-later": "^2.0.0" } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1681,16 +1707,6 @@ } } }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -1700,14 +1716,6 @@ "tweetnacl": "^0.14.3" } }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "requires": { - "callsite": "1.0.0" - } - }, "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -1720,11 +1728,6 @@ "integrity": "sha512-xVNN69YGDghOqCCtA6FI7avYrr02mTJjOgB0/f1VPD3pJC8QEvjTKWc4epDx8AqxxA75NI0QpVM2gPJXUbE4Tg==", "dev": true }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", @@ -1841,11 +1844,6 @@ "unset-value": "^1.0.0" } }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" - }, "camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -1892,15 +1890,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "chai": { - "version": "2.1.2", - "resolved": "http://registry.npmjs.org/chai/-/chai-2.1.2.tgz", - "integrity": "sha1-AefKyJUM41bVIK/ngTJQWxzVRA8=", - "requires": { - "assertion-error": "1.0.0", - "deep-eql": "0.1.3" - } - }, "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", @@ -1992,14 +1981,53 @@ } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + } } }, "clone": { @@ -2080,39 +2108,31 @@ "dev": true }, "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.3.0.tgz", - "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=" - }, "common-tags": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", "dev": true }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true }, "concat-map": { "version": "0.0.1", @@ -2133,20 +2153,44 @@ } }, "concurrently": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.1.1.tgz", - "integrity": "sha512-48+FE5RJ0qc8azwKv4keVQWlni1hZeSjcWr8shBelOBtBHcKj1aJFM9lHRiSc1x7lq416pkvsqfBMhSRja+Lhw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.2.0.tgz", + "integrity": "sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw==", "dev": true, "requires": { - "chalk": "^2.4.1", - "date-fns": "^1.23.0", - "lodash": "^4.17.10", + "chalk": "^2.4.2", + "date-fns": "^2.0.1", + "lodash": "^4.17.15", "read-pkg": "^4.0.1", - "rxjs": "^6.3.3", + "rxjs": "^6.5.2", "spawn-command": "^0.0.2-1", - "supports-color": "^4.5.0", - "tree-kill": "^1.1.0", - "yargs": "^12.0.1" + "supports-color": "^6.1.0", + "tree-kill": "^1.2.2", + "yargs": "^13.3.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + } } }, "console-control-strings": { @@ -2212,19 +2256,6 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "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" - } - }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -2254,9 +2285,9 @@ } }, "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.14.0.tgz", + "integrity": "sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw==", "dev": true }, "debug": { @@ -2279,13 +2310,17 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "deep-eql": { - "version": "0.1.3", - "resolved": "http://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "requires": { - "type-detect": "0.1.1" - } + "deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true }, "default-compare": { "version": "1.0.0", @@ -2388,11 +2423,6 @@ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, - "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=" - }, "downloadjs": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/downloadjs/-/downloadjs-1.4.7.tgz", @@ -2447,6 +2477,12 @@ "integrity": "sha512-ZUXBUyGLeoJxp4Nt6G/GjBRLnyz8IKQGexZ2ndWaoegThgMGFO1tdDYID5gBV32/1S83osjJHyfzvanE/8HY4Q==", "dev": true }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -2472,69 +2508,6 @@ } } }, - "engine.io": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz", - "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==", - "requires": { - "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~6.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "engine.io-client": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.1.tgz", - "integrity": "sha512-q66JBFuQcy7CSlfAz9L3jH+v7DTT3i6ZEadYcVj2pOs8/0uJHLxKX3WBkGTvULJMdz0tUCyJag0aKT/dpXL9BQ==", - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2616,21 +2589,6 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2823,15 +2781,15 @@ } }, "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=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fill-range": { @@ -2953,14 +2911,6 @@ "mime-types": "^2.1.12" } }, - "formatio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", - "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", - "requires": { - "samsam": "~1.1" - } - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -3604,12 +3554,6 @@ "number-is-nan": "^1.0.0" } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -3632,6 +3576,15 @@ } } }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -3650,15 +3603,6 @@ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -3771,6 +3715,17 @@ "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", "dev": true }, + "globule": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", + "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.12", + "minimatch": "~3.0.2" + } + }, "glogg": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", @@ -3786,11 +3741,6 @@ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, - "growl": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", - "integrity": "sha1-Sy3sjZB+k9szZiTc7AGDUC+MlCg=" - }, "gulp": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", @@ -4086,26 +4036,6 @@ } } }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4231,9 +4161,9 @@ } }, "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", "dev": true }, "indent-string": { @@ -4245,11 +4175,6 @@ "repeating": "^2.0.0" } }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4286,12 +4211,6 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "ipaddr.js": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", @@ -4409,13 +4328,10 @@ "dev": true }, "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -4480,12 +4396,20 @@ } }, "is-reference": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.3.tgz", - "integrity": "sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.0.tgz", + "integrity": "sha512-ZVxq+5TkOx6GQdnoMm2aRdCKADdcrOWXLGzGT+vIA8DMpqEJaRk5AL1bS80zJ2bjHunVmjdzfCt0e4BymIEqKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" + "@types/estree": "0.0.44" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.44", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.44.tgz", + "integrity": "sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g==", + "dev": true + } } }, "is-regexp": { @@ -4503,12 +4427,6 @@ "is-unc-path": "^1.0.0" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -4577,31 +4495,10 @@ "textextensions": "2" } }, - "jade": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", - "requires": { - "commander": "0.6.1", - "mkdirp": "0.3.0" - }, - "dependencies": { - "commander": { - "version": "0.6.1", - "resolved": "http://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=" - }, - "mkdirp": { - "version": "0.3.0", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" - } - } - }, "js-base64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", - "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==", "dev": true }, "js-levenshtein": { @@ -4686,9 +4583,9 @@ "dev": true }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "last-run": { @@ -4710,15 +4607,6 @@ "readable-stream": "^2.0.5" } }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "lead": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", @@ -4811,12 +4699,6 @@ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -4835,12 +4717,6 @@ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", "dev": true }, - "lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true - }, "lodash.some": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", @@ -4866,11 +4742,6 @@ "lodash._reinterpolate": "^3.0.0" } }, - "lolex": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/lolex/-/lolex-1.1.0.tgz", - "integrity": "sha1-Xbu8hQOV51I8dLNYb3+9JibSWxs=" - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4897,14 +4768,19 @@ "dev": true }, "lru-cache": { - "version": "2.7.3", - "resolved": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } }, "magic-string": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", - "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" @@ -4919,15 +4795,6 @@ "kind-of": "^6.0.2" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -4989,17 +4856,6 @@ "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -5016,14 +4872,6 @@ "read-pkg-up": "^1.0.1", "redent": "^1.0.0", "trim-newlines": "^1.0.0" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } } }, "merge-descriptors": { @@ -5075,12 +4923,6 @@ "mime-db": "~1.37.0" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -5091,9 +4933,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "mixin-deep": { @@ -5118,98 +4960,12 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "mocha": { - "version": "2.2.5", - "resolved": "http://registry.npmjs.org/mocha/-/mocha-2.2.5.tgz", - "integrity": "sha1-07cqT+SeyUOTU/GsiT28Qw2ZMUA=", - "requires": { - "commander": "2.3.0", - "debug": "2.0.0", - "diff": "1.4.0", - "escape-string-regexp": "1.0.2", - "glob": "3.2.3", - "growl": "1.8.1", - "jade": "0.26.3", - "mkdirp": "0.5.0", - "supports-color": "~1.2.0" - }, - "dependencies": { - "debug": { - "version": "2.0.0", - "resolved": "http://registry.npmjs.org/debug/-/debug-2.0.0.tgz", - "integrity": "sha1-ib2d9nMrUSVrxnBTQrugLtEhMe8=", - "requires": { - "ms": "0.6.2" - } - }, - "escape-string-regexp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=" - }, - "glob": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "integrity": "sha1-4xPusknHr/qlxHUoaw4RW1mDlGc=", - "requires": { - "graceful-fs": "~2.0.0", - "inherits": "2", - "minimatch": "~0.2.11" - } - }, - "graceful-fs": { - "version": "2.0.3", - "resolved": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=" - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.0", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "0.6.2", - "resolved": "http://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=" - }, - "supports-color": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.1.tgz", - "integrity": "sha1-Eu4hUHCGzZjBBY2ewPSsR2t687I=" - } + "minimist": "^1.2.5" } }, "ms": { @@ -5227,7 +4983,8 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", - "dev": true + "dev": true, + "optional": true }, "nanomatch": { "version": "1.2.13", @@ -5259,12 +5016,6 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", @@ -5294,65 +5045,11 @@ "which": "1" }, "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true - }, - "tar": { - "version": "2.2.2", - "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - }, - "dependencies": { - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - } - } } } }, @@ -5366,9 +5063,9 @@ } }, "node-sass": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", - "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", "dev": true, "requires": { "async-foreach": "^0.1.3", @@ -5378,16 +5075,14 @@ "get-stdin": "^4.0.1", "glob": "^7.0.3", "in-publish": "^2.0.0", - "lodash.assign": "^4.2.0", - "lodash.clonedeep": "^4.3.2", - "lodash.mergewith": "^4.6.0", + "lodash": "^4.17.15", "meow": "^3.7.0", "mkdirp": "^0.5.1", - "nan": "^2.10.0", + "nan": "^2.13.2", "node-gyp": "^3.8.0", "npmlog": "^4.0.0", "request": "^2.88.0", - "sass-graph": "^2.2.4", + "sass-graph": "2.2.5", "stdout-stream": "^1.4.0", "true-case-path": "^1.0.2" }, @@ -5427,58 +5122,11 @@ "which": "^1.2.9" } }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true }, "strip-ansi": { "version": "3.0.1", @@ -5542,15 +5190,6 @@ "once": "^1.3.2" } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -5587,11 +5226,6 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -5723,17 +5357,6 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -5750,24 +5373,6 @@ "os-tmpdir": "^1.0.0" } }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", @@ -5834,22 +5439,6 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "requires": { - "better-assert": "~1.0.0" - } - }, "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", @@ -5879,12 +5468,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", @@ -5942,6 +5525,12 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -6077,21 +5666,11 @@ "dev": true }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "pumpify": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", @@ -6392,9 +5971,9 @@ } }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -6404,7 +5983,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -6414,7 +5993,7 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" } @@ -6478,37 +6057,12 @@ "dev": true }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "glob": "^7.0.5" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } + "glob": "^7.1.3" } }, "rollup": { @@ -6522,64 +6076,10 @@ "acorn": "^6.2.0" } }, - "rollup-plugin-commonjs": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.0.1.tgz", - "integrity": "sha512-x0PcCVdEc4J8igv1qe2vttz8JKAKcTs3wfIA3L8xEty3VzxgORLrzZrNWaVMc+pBC4U3aDOb9BnWLAQ8J11vkA==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - }, - "dependencies": { - "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - }, - "dependencies": { - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true - }, - "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "rollup-plugin-svelte": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.0.tgz", - "integrity": "sha512-4MRZG29dAWDpoxEs5uIHzDnYafQEOLaKIJAuDYUtFIzEm1F1IGSTlFyjd8/qk4wltlHdu6V7YfZY53+CKryhMg==", + "rollup-plugin-svelte": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.0.tgz", + "integrity": "sha512-4MRZG29dAWDpoxEs5uIHzDnYafQEOLaKIJAuDYUtFIzEm1F1IGSTlFyjd8/qk4wltlHdu6V7YfZY53+CKryhMg==", "dev": true, "requires": { "require-relative": "^0.8.7", @@ -6597,9 +6097,9 @@ } }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -6624,162 +6124,104 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "samsam": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz", - "integrity": "sha1-n1CHQZtNCR8jJXHn+lLpCw9VJiE=" - }, "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", "dev": true, "requires": { "glob": "^7.0.0", "lodash": "^4.0.0", "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" + "yargs": "^13.3.2" }, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "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" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "lcid": "^1.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "ansi-regex": "^4.1.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "camelcase": "^3.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -6885,47 +6327,12 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, - "sinon": { - "version": "1.14.1", - "resolved": "http://registry.npmjs.org/sinon/-/sinon-1.14.1.tgz", - "integrity": "sha1-2CeXhBkYc0UHyUt6c+P1YJBFeK0=", - "requires": { - "formatio": "1.1.1", - "lolex": "1.1.0", - "util": ">=0.10.3 <1" - } - }, - "sinon-chai": { - "version": "2.7.0", - "resolved": "http://registry.npmjs.org/sinon-chai/-/sinon-chai-2.7.0.tgz", - "integrity": "sha1-ST3zo9dYkz/dNnjQEaT3ONXnJUA=" - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -7033,122 +6440,6 @@ } } }, - "socket.io": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", - "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", - "requires": { - "debug": "~4.1.0", - "engine.io": "~3.3.1", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.2.0", - "socket.io-parser": "~3.3.0" - }, - "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" - }, - "socket.io-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", - "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.3.1", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "socket.io-p2p-server": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/socket.io-p2p-server/-/socket.io-p2p-server-1.2.0.tgz", - "integrity": "sha1-VFW/rxY3P072yuBLbOvsZmN3iuY=", - "requires": { - "chai": "~2.1.2", - "debug": "~2.1.2", - "mocha": "~2.2.1", - "sinon": "~1.14.1", - "sinon-chai": "~2.7.0" - }, - "dependencies": { - "debug": { - "version": "2.1.3", - "resolved": "http://registry.npmjs.org/debug/-/debug-2.1.3.tgz", - "integrity": "sha1-zoqxte6PvuK/o7Yzyrk9NmtjQY4=", - "requires": { - "ms": "0.7.0" - } - }, - "ms": { - "version": "0.7.0", - "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.0.tgz", - "integrity": "sha1-hlvpTC5zl62KV9pqYzpuLzB5i4M=" - } - } - }, - "socket.io-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", - "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", - "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - } - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -7234,9 +6525,9 @@ } }, "sshpk": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", - "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -7289,38 +6580,6 @@ "dev": true, "requires": { "readable-stream": "^2.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://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": "http://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" - } - } } }, "stream-exhaust": { @@ -7384,12 +6643,6 @@ "babel-plugin-transform-object-rest-spread": "^6.26.0" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -7400,20 +6653,12 @@ } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^2.0.0" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - } + "has-flag": "^3.0.0" } }, "svelte": { @@ -7437,6 +6682,17 @@ "es6-symbol": "^3.1.1" } }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, "textextensions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.5.0.tgz", @@ -7511,11 +6767,6 @@ "is-negated-glob": "^1.0.0" } }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -7568,27 +6819,19 @@ } }, "tough-cookie": { - "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==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "tree-kill": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", - "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, "trim-newlines": { @@ -7610,37 +6853,12 @@ "dev": true, "requires": { "glob": "^7.1.2" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } } }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true }, "tunnel-agent": { @@ -7664,11 +6882,6 @@ "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==", "dev": true }, - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=" - }, "type-is": { "version": "1.6.16", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", @@ -7871,14 +7084,6 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "requires": { - "inherits": "2.0.3" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -7891,9 +7096,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v8flags": { @@ -8240,17 +7445,9 @@ "dev": true }, "ws": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz", - "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz", + "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==" }, "xtend": { "version": "4.0.1", @@ -8271,39 +7468,72 @@ "dev": true }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" } } } diff --git a/package.json b/package.json index 7dbafd3a..00b62a74 100644 --- a/package.json +++ b/package.json @@ -16,9 +16,8 @@ "dependencies": { "downloadjs": "^1.4.7", "express": "^4.16.4", - "socket.io": "^2.2.0", - "socket.io-p2p-server": "^1.2.0", - "svelte-routing": "^1.2.1" + "svelte-routing": "^1.2.1", + "ws": "^7.3.0" }, "engines": { "node": "10.x" @@ -26,9 +25,11 @@ "devDependencies": { "@babel/core": "^7.2.2", "@babel/preset-env": "^7.2.3", + "@rollup/plugin-commonjs": "^12.0.0", + "@rollup/plugin-node-resolve": "^8.0.0", "babel-core": "^7.0.0-bridge.0", "babel-preset-minify": "^0.5.0", - "concurrently": "^4.1.1", + "concurrently": "^5.2.0", "gulp": "^4.0.2", "gulp-autoprefixer": "^7.0.1", "gulp-babel": "^8.0.0", @@ -37,8 +38,6 @@ "gulp-replace": "^1.0.0", "gulp-sass": "^4.0.2", "rollup": "^1.18.0", - "rollup-plugin-commonjs": "^10.0.1", - "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-svelte": "^5.1.0", "svelte": "^3.18.1", "workbox-build": "^4.3.1" From 2ec5948e2b5864b0766ca7893e429c4d65e0c327 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 29 May 2020 20:17:26 +0530 Subject: [PATCH 002/127] Migrate from socket.io socket.io is replaced with ws library along with custom wrappers to implement rooms and broadcast features --- constants.js | 8 ++ index.js | 120 ------------------------- package.json | 3 +- public/utils/socketConnect.js | 15 +++- public/views/FileTransfer.svelte | 48 ++++------ server/index.js | 150 +++++++++++++++++++++++++++++++ server/log.js | 12 +++ utils/socket.js | 56 ++++++++++++ 8 files changed, 255 insertions(+), 157 deletions(-) create mode 100644 constants.js delete mode 100644 index.js create mode 100644 server/index.js create mode 100644 server/log.js create mode 100644 utils/socket.js diff --git a/constants.js b/constants.js new file mode 100644 index 00000000..6f673f34 --- /dev/null +++ b/constants.js @@ -0,0 +1,8 @@ +module.exports = { + CHUNK: 'chunk', + JOIN: 'join', + USER_JOIN: 'user-join', + USER_LEAVE: 'user-leave', + FILE_INIT: 'file-init', + FILE_STATUS: 'file-status', +}; \ No newline at end of file diff --git a/index.js b/index.js deleted file mode 100644 index 329f83d1..00000000 --- a/index.js +++ /dev/null @@ -1,120 +0,0 @@ -const express = require('express'); -const app = express(); -const http = require('http').Server(app); -const io = require('socket.io')(http); -const p2p = require('socket.io-p2p-server').Server; - - -/** - * A custom log function that also prints the time - * @param {String} message Message to be logged - */ -function log(message) { - if (process.env.NODE_ENV === 'production') return; - - const date = new Date(); - console.log(`[${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}] ${message}`); -} - - -/** - * Sends a list of connected users to a specific room - * @param {String} room Name of the room to emit the list - */ -function emitUsrsList(room) { - const roomData = io.sockets.adapter.rooms[room]; - if (!roomData) return; - - const sockets = io.sockets.adapter.rooms[room].sockets; - io.to(room).emit('userJoin', Object.keys(sockets).map(socketID => io.sockets.connected[socketID].username)); -} - -app.use(express.static('dist')); -app.use('/app(/*)?', (req, res) => { - res.sendFile(__dirname + '/dist/app.html'); -}); -app.use('/sw.js', (req, res) => { - res.sendFile(__dirname + '/dist/sw.js', { - headers: { - 'Service-Worker-Allow': '/app' - } - }); -}); - - -const clients = {}; - - -/** - * Check if the user is already present in the room. - * If the user is present, then don't allow user with same name in the room. - */ -io.use((socket, next) => { - - const query = socket.handshake.query; - - if (clients[query.room] && clients[query.room].users[query.user]) { - next(new Error('A user with same nickname exists in this room')); - } else { - next(); - } - -}); - - -io.use(p2p); - -io.on('connection', socket => { - - const query = socket.handshake.query; - const room = query.room; - const user = query.user; - - /** - * Add the instance of the room - */ - if (!clients[room]) { - clients[room] = { users: {} }; - } - clients[room].users[user] = socket.id; - - - log(`${user} has joined ${room} room`); - socket = socket.join(room); - socket.username = user; - - socket.on('disconnect', () => { - - delete clients[room].users[user]; - - socket.to(room).emit('userLeft', user) - }); - - emitUsrsList(room); - - socket.on('file', data => socket.broadcast.emit('file', data)); - socket.on('rec-status', data => { - const sID = clients[room].users[data.sender]; - io.sockets.connected[sID].emit('rec-status', data); - }); - socket.on('file-data', data => socket.broadcast.emit('file-data', data)); - -}); - -const port = process.env.PORT ? process.env.PORT : 3030; -http.listen(port, () => { - log('listening on *:'+port); -}); - - -if (process.env.NODE_ENV === 'production') { - // Redirect http to https - app.enable('trust proxy'); - app.use((req, res, next) => { - if (req.secure) { - next(); - } else { - res.redirect('https://' + req.headers.host + req.url); - } - }); -} \ No newline at end of file diff --git a/package.json b/package.json index 00b62a74..626b6c89 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,9 @@ "name": "blaze", "version": "1.0.0-beta.3", "description": "Quickly share files with multiple users", - "main": "index.js", "private": true, "scripts": { - "server": "node index", + "server": "node server/index", "watch": "gulp dev", "dev": "concurrently \"npm:watch\" \"npm:server\"", "build": "gulp", diff --git a/public/utils/socketConnect.js b/public/utils/socketConnect.js index e0ad32db..60d17c4e 100644 --- a/public/utils/socketConnect.js +++ b/public/utils/socketConnect.js @@ -1,12 +1,23 @@ +import Socket from '../../utils/socket'; +import constants from '../../constants'; + /** * Opens a socket connection to join a room * @param {String} room Room to join * @param {String} username Name of the user joining the room */ function socketConnect(room, username) { - return io('//'+window.location.host, { - query: `room=${room}&user=${username}`, + const socket = new Socket(new WebSocket(`ws://${window.location.host}`)); + + socket.on('open', () => { + socket.send(constants.JOIN, { + roomName: room, + name: username, + isWebRTC: true, + }); }); + + return socket; } export default socketConnect; \ No newline at end of file diff --git a/public/views/FileTransfer.svelte b/public/views/FileTransfer.svelte index d8b40d20..b2888e34 100644 --- a/public/views/FileTransfer.svelte +++ b/public/views/FileTransfer.svelte @@ -9,6 +9,7 @@ import Modal from '../components/Modal.svelte'; import FileDrop from '../components/FileDrop.svelte'; import useToast from '../components/Toast/'; + import constants from '../../constants'; const data = JSON.parse(localStorage.getItem('blaze')); let errorModal = { @@ -113,7 +114,7 @@ /** * Initially meta data is shared */ - socket.emit('file', { + socket.send(constants.FILE_INIT, { user: client.name, size, meta: files.filter(item => !item.sent) @@ -131,11 +132,11 @@ * Indicates that the stream has ended and file should now be built * on the receiver's system */ - socket.emit('file', { + socket.send(constants.FILE_INIT, { end: true, }); // Switch off the status event listener as transfer is complete - socket.off('rec-status'); + socket.off(constants.FILE_STATUS); /** * 2 seconds timeout before the file transfer is resolved @@ -156,7 +157,7 @@ /** * Send a chunk of data */ - socket.emit('file-data', data.slice(0, block)); + socket.send(constants.CHUNK, data.slice(0, block)); /** * Update for next iteration @@ -179,7 +180,7 @@ } stream(); - socket.on('rec-status', data => { + socket.listen(constants.FILE_STATUS, data => { if (data.percent !== transferStatus.percent) { transferStatus.percent = data.percent; transferStatus.peers = [ data.peer ]; @@ -214,39 +215,20 @@ onMount(() => { - socket = new P2P(socketConnect(client.room, client.name), { - peerOpts: { - config: { - iceServers: [ - { urls: 'stun:stun.l.google.com:19302' }, - { urls: 'stun:global.stun.twilio.com:3478?transport=udp' }, - { urls: 'stun:stun.services.mozilla.com' }, - { - urls: 'turn:numb.viagenie.ca', - username: 'akash.hamirwasia@gmail.com', - credential: '6NfWZz9kUCPmNbe' - } - ] - } - } - }, () => { - /** - * Connection upgrded to WebRTC - */ - backend = 'Using WebRTC'; - }); + socket = socketConnect(client.room, client.name); + backend = 'Using WebRTC'; /** * A user joins the room */ - socket.on('userJoin', users => { + socket.listen(constants.USER_JOIN, users => { /** * Online users list is rendered */ users.forEach(user => { - if (user === client.name) return; + if (user.name === client.name) return; - visualizer.addNode(user); + visualizer.addNode(user.name); /** * Fallback WebSockets tech is used by default. When connection switches to WebRTC, @@ -264,7 +246,7 @@ /** * A user leaves the room */ - socket.on('userLeft', user => { + socket.listen(constants.USER_LEAVE, user => { // Remove the user from the visualizer visualizer.removeNode(user); // Update the userCount @@ -299,7 +281,7 @@ let fileParts = []; let metaData = {}; let intPerc = 25, size = 0; - socket.on('file', data => { + socket.listen(constants.FILE_INIT, data => { if (data.end) { @@ -328,7 +310,7 @@ } }); - socket.on('file-data', data => { + socket.listen(constants.CHUNK, data => { // document.getElementById('btn-addFiles').disabled = true; fileParts.push(data); @@ -338,7 +320,7 @@ if (percentage >= intPerc) { intPerc += 15; - socket.emit('rec-status', { + socket.send(constants.FILE_STATUS, { percent: intPerc, peer: client.name, sender: metaData.user diff --git a/server/index.js b/server/index.js new file mode 100644 index 00000000..8a2c49d6 --- /dev/null +++ b/server/index.js @@ -0,0 +1,150 @@ +const express = require('express'); +const http = require('http'); +const path = require('path'); +const WebSocket = require('ws'); +const Socket = require('../utils/socket'); +const log = require('./log'); +const constants = require('../constants'); + +const app = express(); +const server = http.createServer(app); + +const wss = new WebSocket.Server({ server }); +const rooms = {}; + +class Room { + constructor(name) { + this.sockets = []; + this.sender = null; + this.name = name; + } + + addSocket(socket) { + this.sockets.push(socket); + } + + removeSocket(socket) { + this.sockets = this.sockets.filter(client => client.name !== socket.name); + } + + broadcast(event, message, ignore) { + this.sockets.forEach(client => { + if (ignore && ignore.includes(client.name)) return; + + client.send(event, message); + }); + } + + get socketsData() { + return this.sockets.map(({ name, isWebRTC }) => ({ name, isWebRTC })); + } + + getSocketFromName(name) { + return this.sockets.find(socket => socket.name === name); + } + + get senderSocket() { + if (!this.sender) return; + + return this.sockets.find(socket => socket.name === this.sender); + } +} + + +wss.on('connection', (ws) => { + const socket = new Socket(ws); + let room; + + socket.listen(constants.JOIN, (data) => { + const { roomName, name, isWebRTC } = data; + socket.name = name; + socket.isWebRTC = isWebRTC; + + room = rooms[roomName]; + + if (room) { + const user = room.getSocketFromName(socket.name); + + if (user) { + ws.close(1, "User with same name exists"); + return; + } + } + else { + rooms[roomName] = new Room(roomName); + room = rooms[roomName]; + } + + log(`${name} has joined ${roomName}`); + + room.addSocket(socket); + room.broadcast(constants.USER_JOIN, room.socketsData); + }); + + socket.on('close', () => { + if (!room) return; + + log(`${socket.name} has left ${room.name}`); + room.removeSocket(socket); + const sockets = room.socketsData; + + if (Array.isArray(sockets)) { + if (sockets.length) { + room.broadcast(constants.USER_LEAVE, socket.name, [ socket.name ]); + } else { + delete rooms[room.name]; + } + } + }); + + socket.listen(constants.FILE_INIT, (data) => { + // TODO: Prevent init from multiple sockets if a sender is already there + log(`${socket.name} has initiated file transfer`); + + room.sender = socket.name; + room.broadcast(constants.FILE_INIT, data, [ socket.name ]); + }); + + socket.listen(constants.FILE_STATUS, (data) => { + const sender = room.senderSocket; + // TODO: Sender is not there but some file is getting transferred! + if (!sender) return; + + sender.send(constants.FILE_STATUS, data); + }); + + socket.listen(constants.CHUNK, (data) => { + room.broadcast(constants.CHUNK, data, [ room.sender ]); + }); +}); + + +app.use(express.static('dist')); +app.use('/app(/*)?', (req, res) => { + res.sendFile(path.resolve(__dirname, '../dist/app.html')); +}); +app.use('/sw.js', (req, res) => { + res.sendFile(path.resolve(__dirname, '../dist/sw.js'), { + headers: { + 'Service-Worker-Allow': '/app' + } + }); +}); + + +const port = process.env.PORT ? process.env.PORT : 3030; +server.listen(port, () => { + log('listening on *:'+port); +}); + +if (process.env.NODE_ENV === 'production') { + // Redirect http to https + app.enable('trust proxy'); + app.use((req, res, next) => { + if (req.secure) { + next(); + } else { + res.redirect('https://' + req.headers.host + req.url); + } + }); +} \ No newline at end of file diff --git a/server/log.js b/server/log.js new file mode 100644 index 00000000..7f086be4 --- /dev/null +++ b/server/log.js @@ -0,0 +1,12 @@ +/** + * A custom log function that also prints the time + * @param {String} message Message to be logged + */ +function log(message) { + if (process.env.NODE_ENV === 'production') return; + + const date = new Date(); + console.log(`[${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}] ${message}`); +} + +module.exports = log; \ No newline at end of file diff --git a/utils/socket.js b/utils/socket.js new file mode 100644 index 00000000..dccbdf0a --- /dev/null +++ b/utils/socket.js @@ -0,0 +1,56 @@ +class Socket { + + constructor(socket) { + this.socket = socket; + this.socket.binaryType = 'arraybuffer'; + this.callbacks = {}; + this.isWebRTC = false; + + socket.addEventListener('message', msg => { + let callback, data; + if (typeof msg.data === 'string') { + const json = JSON.parse(msg.data); + data = json.data; + callback = this.callbacks[json.event]; + } + else { + callback = this.callbacks['chunk']; + data = msg.data; + } + + if (callback) { + callback(data); + } + }); + } + + listen(event, callback) { + this.callbacks[event] = callback; + } + + on(event, callback) { + this.socket.addEventListener(event, callback); + } + + off(event) { + this.callbacks[event] = undefined; + } + + send(event, data) { + if (event === 'chunk') { + this.socket.send(data); + } + else { + this.socket.send(JSON.stringify({ + event: event, + data: data, + })); + } + } + + get id() { + return this.socket.id; + } +} + +module.exports = Socket; \ No newline at end of file From 635f158e7aa7e0e6fd768a09a229632c72567bdc Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 29 May 2020 20:25:24 +0530 Subject: [PATCH 003/127] Remove socket.io script tags and files --- public/app.html | 2 - static/js/socketiop2p.min.js | 906 ----------------------------------- 2 files changed, 908 deletions(-) delete mode 100644 static/js/socketiop2p.min.js diff --git a/public/app.html b/public/app.html index 3328cf47..10538b55 100644 --- a/public/app.html +++ b/public/app.html @@ -20,8 +20,6 @@ - - diff --git a/static/js/socketiop2p.min.js b/static/js/socketiop2p.min.js deleted file mode 100644 index 4cb81a7f..00000000 --- a/static/js/socketiop2p.min.js +++ /dev/null @@ -1,906 +0,0 @@ -"use strict";function _objectSpread(e){for(var t=1;t>16,d[l++]=255&t>>8,d[l++]=255&t;return 2===s&&(t=c[e.charCodeAt(f)]<<2|c[e.charCodeAt(f+1)]>>4,d[l++]=255&t),1===s&&(t=c[e.charCodeAt(f)]<<10|c[e.charCodeAt(f+1)]<<4|c[e.charCodeAt(f+2)]>>2,d[l++]=255&t>>8,d[l++]=255&t),d}function s(e){return p[63&e>>18]+p[63&e>>12]+p[63&e>>6]+p[63&e]}function d(e,t,n){for(var r,o=[],a=t;al?l:s+a));// pad the end with zeros, but make sure to not forget the extra bytes -return 1===r?(t=e[n-1],o.push(p[t>>2]+p[63&t<<4]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],o.push(p[t>>10]+p[63&t>>4]+p[63&t<<2]+"=")),o.join("")}n.byteLength=function(e){var t=r(e),n=t[0],o=t[1];return 3*(n+o)/4-o},n.toByteArray=a,n.fromByteArray=l;for(var p=[],c=[],u="undefined"==typeof Uint8Array?Array:Uint8Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g=0,h=f.length;g - * @license MIT - */ /* eslint-disable no-proto */"use strict";var X=String.fromCharCode,J=Math.min;function r(e){if(2147483647e)throw new RangeError("The value \""+e+"\" is invalid for option \"size\"")}function p(e,t,n){return l(e),0>=e?r(e):void 0===t?r(e):"string"==typeof n?r(e).fill(t,n):r(e).fill(t)}/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/function c(e){return l(e),r(0>e?0:0|m(e))}/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */function u(e,t){if(("string"!=typeof t||""===t)&&(t="utf8"),!s.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|b(e,t),o=r(n),a=o.write(e,t);return a!==n&&(o=o.slice(0,a)),o}function f(e){for(var t=0>e.length?0:0|m(e.length),n=r(t),o=0;ot||e.byteLength=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+2147483647 .toString(16)+" bytes");return 0|e}function b(e,t){if(s.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||Y(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError("The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type "+_typeof(e));var n=e.length,r=2>>1;case"base64":return $(e).length;default:if(o)return r?-1:F(e).length;// assume utf8 -t=(""+t).toLowerCase(),o=!0;}}function y(e,t,n){var r=!1;// No need to verify that "this.length <= MAX_UINT32" since it's a read-only -// property of a typed array. -// This behaves neither like String nor Uint8Array in that we set start/end -// to their upper/lower bounds if the value passed is out of range. -// undefined is handled specially as per ECMA-262 6th Edition, -// Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. -// Return early if start > this.length. Done here to prevent potential uint32 -// coercion fail below. -if((void 0===t||0>t)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),0>=n)return"";// Force coersion to uint32. This will also coerce falsey/NaN values to 0. -if(n>>>=0,t>>>=0,n<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,n);case"utf8":case"utf-8":return R(this,t,n);case"ascii":return B(this,t,n);case"latin1":case"binary":return I(this,t,n);case"base64":return E(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0;}}// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -function _(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function w(e,t,n,r,o){// Empty buffer means no match -if(0===e.length)return-1;// Normalize byteOffset -if("string"==typeof n?(r=n,n=0):2147483647n&&(n=-2147483648),n=+n,V(n)&&(n=o?0:e.length-1),0>n&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(0>n)if(o)n=0;else return-1;// Normalize val -// Finally, search either indexOf (if dir is true) or lastIndexOf -if("string"==typeof t&&(t=s.from(t,r)),s.isBuffer(t))// Special case: looking for empty string/buffer always fails -return 0===t.length?-1:C(e,t,n,r,o);if("number"==typeof t)// Search for a byte value [0-255] -return t&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):C(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function C(e,t,n,r,o){function a(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}var s=1,d=e.length,l=t.length;if(void 0!==r&&(r=(r+"").toLowerCase(),"ucs2"===r||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(2>e.length||2>t.length)return-1;s=2,d/=2,l/=2,n/=2}var p;if(o){var c=-1;for(p=n;pd&&(n=d-l),p=n;0<=p;p--){for(var u=!0,f=0;fo&&(r=o)):r=o;var a=t.length;r>a/2&&(r=a/2);for(var s,d=0;da&&(s=a):2===d?(l=e[o+1],128==(192&l)&&(u=(31&a)<<6|63&l,127u||57343u&&(s=u))):void 0}null===s?(s=65533,d=1):65535>>10),s=56320|1023&s),r.push(s),o+=d}return A(r)}// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -function A(e){var t=e.length;if(t<=4096)return X.apply(String,e);// avoid extra slice() -// Decode in chunks to avoid "call stack size exceeded". -for(var n="",r=0;rt)&&(t=0),(!n||0>n||n>r)&&(n=r);for(var o="",a=t;ae)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function U(e,t,n,r,o,a){if(!s.isBuffer(e))throw new TypeError("\"buffer\" argument must be a Buffer instance");if(t>o||te.length)throw new RangeError("Index out of range")}function D(e,t,n,r){if(n+r>e.length)throw new RangeError("Index out of range");if(0>n)throw new RangeError("Index out of range")}function O(e,t,n,r,o){return t=+t,n>>>=0,o||D(e,t,n,4,34028234663852886e22,-34028234663852886e22),Z.write(e,t,n,r,23,4),n+4}function N(e,t,n,r,o){return t=+t,n>>>=0,o||D(e,t,n,8,17976931348623157e292,-17976931348623157e292),Z.write(e,t,n,r,52,8),n+8}function W(e){// Node converts strings with length < 2 to '' -if(e=e.split("=")[0],e=e.trim().replace(Q,""),2>e.length)return"";// Node allows for non-padded base64 strings (missing trailing ===), base64-js does not -for(;0!=e.length%4;)e+="=";return e}function q(e){return 16>e?"0"+e.toString(16):e.toString(16)}function F(e,t){t=t||1/0;for(var n,r=e.length,o=null,a=[],s=0;sn){// last char was a lead -if(!o){// no lead yet -if(56319n){-1<(t-=3)&&a.push(239,191,189),o=n;continue}// valid surrogate pair -n=(o-55296<<10|n-56320)+65536}else o&&-1<(t-=3)&&a.push(239,191,189);// encode utf8 -if(o=null,128>n){if(0>(t-=1))break;a.push(n)}else if(2048>n){if(0>(t-=2))break;a.push(192|n>>6,128|63&n)}else if(65536>n){if(0>(t-=3))break;a.push(224|n>>12,128|63&n>>6,128|63&n)}else if(1114112>n){if(0>(t-=4))break;a.push(240|n>>18,128|63&n>>12,128|63&n>>6,128|63&n)}else throw new Error("Invalid code point")}return a}function z(e){for(var t=[],n=0;n(t-=2));++s)n=e.charCodeAt(s),r=n>>8,o=n%256,a.push(o),a.push(r);return a}function $(e){return K.toByteArray(W(e))}function G(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function Y(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function V(e){// For IE11 support -return e!==e;// eslint-disable-line no-self-compare -}var K=e("base64-js"),Z=e("ieee754");n.Buffer=s,n.SlowBuffer=function(e){return+e!=e&&(e=0),s.alloc(+e)},n.INSPECT_MAX_BYTES=50;n.kMaxLength=2147483647,s.TYPED_ARRAY_SUPPORT=function(){// Can typed array instances can be augmented? -try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function e(){return 42}},42===e.foo()}catch(t){return!1}}(),s.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function e(){return s.isBuffer(this)?this.buffer:void 0}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function e(){return s.isBuffer(this)?this.byteOffset:void 0}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),s.poolSize=8192,s.from=function(e,t,n){return d(e,t,n)},s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,s.alloc=function(e,t,n){return p(e,t,n)},s.allocUnsafe=function(e){return c(e)},s.allocUnsafeSlow=function(e){return c(e)},s.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==s.prototype;// so Buffer.isBuffer(Buffer.prototype) will be false -},s.compare=function(e,t){if(Y(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),Y(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError("The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array");if(e===t)return 0;for(var n=e.length,r=t.length,o=0,d=J(n,r);ot&&(e+=" ... "),""},s.prototype.compare=function(e,t,n,r,o){if(Y(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(e))throw new TypeError("The \"target\" argument must be one of type Buffer or Uint8Array. Received type "+_typeof(e));if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),0>t||n>e.length||0>r||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,o>>>=0,this===e)return 0;for(var a=o-r,d=n-t,l=J(a,d),p=this.slice(r,o),c=e.slice(t,n),u=0;u>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var o=this.length-t;if((void 0===n||n>o)&&(n=o),0n||0>t)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var a=!1;;)switch(r){case"hex":return S(this,e,t,n);case"utf8":case"utf-8":return x(this,e,t,n);case"ascii":return v(this,e,t,n);case"latin1":case"binary":return k(this,e,t,n);case"base64":// Warning: maxLength not taken into account in base64Write -return T(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,t,n);default:if(a)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),a=!0;}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};s.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,0>e?(e+=n,0>e&&(e=0)):e>n&&(e=n),0>t?(t+=n,0>t&&(t=0)):t>n&&(t=n),t>>=0,t>>>=0,n||j(e,t,this.length);for(var r=this[e],o=1,a=0;++a>>=0,t>>>=0,n||j(e,t,this.length);for(var r=this[e+--t],o=1;0>>=0,t||j(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||j(e,t,this.length);for(var r=this[e],a=1,s=0;++s=a&&(r-=o(2,8*t)),r},s.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||j(e,t,this.length);for(var r=t,a=1,s=this[e+--r];0=a&&(s-=o(2,8*t)),s},s.prototype.readInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},s.prototype.readInt16LE=function(e,t){e>>>=0,t||j(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(e,t){e>>>=0,t||j(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return e>>>=0,t||j(e,4,this.length),Z.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),Z.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),Z.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),Z.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t>>>=0,n>>>=0,!r){var a=o(2,8*n)-1;U(this,e,t,n,a,0)}var s=1,d=0;for(this[t]=255&e;++d>>=0,n>>>=0,!r){var a=o(2,8*n)-1;U(this,e,t,n,a,0)}var s=n-1,d=1;for(this[t+s]=255&e;0<=--s&&(d*=256);)this[t+s]=255&e/d;return t+n},s.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||U(this,e,t,1,255,0),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||U(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||U(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||U(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},s.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||U(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var a=o(2,8*n-1);U(this,e,t,n,a-1,-a)}var s=0,d=1,l=0;for(this[t]=255&e;++se&&0===l&&0!==this[t+s-1]&&(l=1),this[t+s]=255&(e/d>>0)-l;return t+n},s.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var a=o(2,8*n-1);U(this,e,t,n,a-1,-a)}var s=n-1,d=1,l=0;for(this[t+s]=255&e;0<=--s&&(d*=256);)0>e&&0===l&&0!==this[t+s+1]&&(l=1),this[t+s]=255&(e/d>>0)-l;return t+n},s.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||U(this,e,t,1,127,-128),0>e&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||U(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||U(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||U(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},s.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||U(this,e,t,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeFloatLE=function(e,t,n){return O(this,e,t,!0,n)},s.prototype.writeFloatBE=function(e,t,n){return O(this,e,t,!1,n)},s.prototype.writeDoubleLE=function(e,t,n){return N(this,e,t,!0,n)},s.prototype.writeDoubleBE=function(e,t,n){return N(this,e,t,!1,n)},s.prototype.copy=function(e,t,n,r){if(!s.isBuffer(e))throw new TypeError("argument should be a Buffer");// Copy 0 bytes; we're done -if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),0t)throw new RangeError("targetStart out of bounds");if(0>n||n>=this.length)throw new RangeError("Index out of range");if(0>r)throw new RangeError("sourceEnd out of bounds");// Are we oob? -r>this.length&&(r=this.length),e.length-to||"latin1"===r)&&(e=o)}}else"number"==typeof e&&(e&=255);// Invalid ranges are not set to a default, so can range check early. -if(0>t||this.length>>=0,n=n===void 0?this.length:n>>>0,e||(e=0);var a;if("number"==typeof e)for(a=t;a= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ /** - * Colorize log arguments if enabled. - * - * @api public - */function a(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+n.humanize(this.diff),!!t){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");// the final "%c" is somewhat tricky, because there could be other -// arguments passed either before or after the %c, so we need to -// figure out the correct index to insert the CSS into -var o=0,a=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"===e||(o++,"%c"===e&&(a=o))}),e.splice(a,0,r)}}/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */function i(){// this hackery is required for IE8/9, where -// the `console.log` function doesn't have 'apply' -return"object"===("undefined"==typeof console?"undefined":_typeof(console))&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */function s(e){try{null==e?n.storage.removeItem("debug"):n.storage.debug=e}catch(t){}}/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */function d(){var e;try{e=n.storage.debug}catch(t){}// If debug isn't set in LS, and we're in Electron, try to load $DEBUG -return!e&&"undefined"!=typeof o&&"env"in o&&(e=o.env.DEBUG),e}/** - * Enable namespaces listed in `localStorage.debug` initially. - */ /** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ /** - * Colors. - */ /** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */n=t.exports=e("./debug"),n.log=i,n.formatArgs=a,n.save=s,n.load=d,n.useColors=function(){// NB: In an Electron preload script, document will be defined but not fully -// initialized. Since we know we're in Chrome, we'll just detect this case -// explicitly -return!!("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)||"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||// is firebug? http://stackoverflow.com/a/398120/376773 -"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||// is firefox >= v31? -// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages -"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&31<=parseInt(RegExp.$1,10)||// double check webkit in userAgent just in case we are in a worker -"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);// is webkit? http://stackoverflow.com/a/16459606/376773 -// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 -},n.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */function(){try{return window.localStorage}catch(t){}}(),n.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],n.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},n.enable(d())}).call(this,e("_process"))},{"./debug":8,_process:3}],8:[function(e,t,n){/** - * Select a color. - * @param {String} namespace - * @return {Number} - * @api private - */function o(e){var t,o=0;for(t in e)o=(o<<5)-o+e.charCodeAt(t),o|=0;return n.colors[r(o)%n.colors.length]}/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */function a(e){function t(){// disabled? -if(t.enabled){var e=t,r=+new Date,o=r-(l||r);// set `diff` timestamp -e.diff=o,e.prev=l,e.curr=r,l=r;for(var a=Array(arguments.length),s=0;sa)){s.warned=!0;var d=new Error("Possible EventEmitter memory leak detected. "+s.length+" \""+(t+"\" listeners added. Use emitter.setMaxListeners() to increase limit."));d.name="MaxListenersExceededWarning",d.emitter=e,d.type=t,d.count=s.length,"object"===("undefined"==typeof console?"undefined":_typeof(console))&&console.warn&&console.warn("%s: %s",d.name,d.message)}return e}function u(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=Array(arguments.length),t=0;te||e!==e)throw new TypeError("\"defaultMaxListeners\" must be a positive number");x=e}}):n.defaultMaxListeners=x,n.prototype.setMaxListeners=function(e){if("number"!=typeof e||0>e||isNaN(e))throw new TypeError("\"n\" argument must be a positive number");return this._maxListeners=e,this},n.prototype.getMaxListeners=function(){return r(this)},n.prototype.emit=function(e){var t,n,r,o,c,u,f="error"===e;if(u=this._events,u)f=f&&null==u.error;else if(!f)return!1;// If there is no 'error' event listener then throw. -if(f){if(1o)return this;0===o?n.shift():m(n,o),1===n.length&&(r[e]=n[0]),r.removeListener&&this.emit("removeListener",e,s||t)}return this},n.prototype.removeAllListeners=function(e){var t,n,r;if(n=this._events,!n)return this;// not listening for removeListener, no need to emit -if(!n.removeListener)return 0===arguments.length?(this._events=_(null),this._eventsCount=0):n[e]&&(0==--this._eventsCount?this._events=_(null):delete n[e]),this;// emit removeListener for all listeners on all events -if(0===arguments.length){var o,a=w(n);for(r=0;r=e)return"0";for(var s=n(o(2,e))/n(r),d=2;s===1/0;d*=2)s=n(o(2,e/d))/n(r)*d;for(var l,p=s-t(s),c="",d=0;d=o(2,e)?a(e,r):c};a.rack=function(e,t,n){var r=function(r){var i=0;do{if(10>1,h=-7,b=r?l-1:0,y=r?-1:1,d=t[n+b];for(b+=y,p=d&(1<<-h)-1,d>>=-h,h+=u;0>=-h,h+=a;0>1,x=23===f?o(2,-24)-o(2,-77):0,v=u?0:g-1,k=u?1:-1,d=0>l||0===l&&0>1/l?1:0;for(l=r(l),isNaN(l)||l===1/0?(y=isNaN(l)?1:0,b=C):(b=t(n(l)/h),1>l*(_=o(2,-b))&&(b--,_*=2),l+=1<=b+S?x/_:x*o(2,1-S),2<=l*_&&(b++,_/=2),b+S>=C?(y=0,b=C):1<=b+S?(y=(l*_-1)*o(2,f),b+=S):(y=l*o(2,S-1)*o(2,f),b=0));8<=f;a[p+v]=255&y,v+=k,y/=256,f-=8);for(b=b< - * @license MIT - */ // The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -t.exports=function(e){return null!=e&&(n(e)||r(e)||!!e._isBuffer)}},{}],15:[function(e,t){function n(e){return r(e)||o(e)}function r(e){return e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array}function o(e){return i[a.call(e)]}t.exports=n,n.strict=r,n.loose=o;var a=Object.prototype.toString,i={"[object Int8Array]":!0,"[object Int16Array]":!0,"[object Int32Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Uint16Array]":!0,"[object Uint32Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0}},{}],16:[function(e,n){/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */function r(e){if(e+="",!(100*/function n(e){return this instanceof n?void(d.call(this,e),l.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",r)):new n(e)}// the no-half-open enforcer -function r(){// if we allow half-open state, or if the writable side ended, -// then we're ok. -this.allowHalfOpen||this._writableState.ended||// no more data can be written. -// But allow more writes to happen in this tick. -a.nextTick(o,this)}function o(e){e.end()}var a=e("process-nextick-args"),i=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};/**/ /**/t.exports=n;/**/var s=e("core-util-is");s.inherits=e("inherits");/**/var d=e("./_stream_readable"),l=e("./_stream_writable");s.inherits(n,d);// avoid scope creep, the keys array can then be collected -for(var p,c=i(l.prototype),u=0;u*/ /**/o.inherits=e("inherits"),o.inherits(n,r),n.prototype._transform=function(e,t,n){n(null,e)}},{"./_stream_transform":23,"core-util-is":6,inherits:13}],22:[function(e,n){(function(r,o){// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -"use strict";/**/function a(e){return N.from(e)}function i(e){return N.isBuffer(e)||e instanceof W}/**/ /**/function s(e,t,n){// Sadly this is not cacheable as some libraries bundle their own -// event emitter implementation with them. -return"function"==typeof e.prependListener?e.prependListener(t,n):void(e._events&&e._events[t]?j(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n));// This is a hack to make sure that our error handler is attached before any -// userland ones. NEVER DO THIS. This is here only because this code needs -// to continue to work with older versions of Node.js that do not include -// the prependListener() method. The goal is to eventually remove this hack. -}function d(n,r){M=M||e("./_stream_duplex"),n=n||{};// Duplex streams are both readable and writable, but share -// the same options object. -// However, some cases require setting options to different -// values for the readable and the writable sides of the duplex stream. -// These options can be provided separately as readableXXX and writableXXX. -var o=r instanceof M;// object stream flag. Used to make read(n) ignore n and to -// make all the buffer merging and length checks go away -this.objectMode=!!n.objectMode,o&&(this.objectMode=this.objectMode||!!n.readableObjectMode);// the point at which it stops calling _read() to fill the buffer -// Note: 0 is a valid value, means "don't call _read preemptively ever" -var a=n.highWaterMark,i=n.readableHighWaterMark,s=this.objectMode?16:16384;// cast to ints. -// A linked list is used to store data chunks instead of an array because the -// linked list can remove elements from the beginning faster than -// array.shift() -// a flag to be able to tell if the event 'readable'/'data' is emitted -// immediately, or on a later tick. We set this to true at first, because -// any actions that shouldn't happen until "later" should generally also -// not happen before the first read call. -// whenever we return null, then we set a flag to say -// that we're awaiting a 'readable' event emission. -// has it been destroyed -// Crypto is kind of old and crusty. Historically, its default string -// encoding is 'binary' so we have to make this configurable. -// Everything else in the universe uses 'utf8', though. -// the number of writers that are awaiting a drain event in .pipe()s -// if true, a maybeReadMore has been scheduled -this.highWaterMark=a||0===a?a:o&&(i||0===i)?i:s,this.highWaterMark=t(this.highWaterMark),this.buffer=new $,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=n.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,n.encoding&&(!H&&(H=e("string_decoder/").StringDecoder),this.decoder=new H(n.encoding),this.encoding=n.encoding)}function l(t){return M=M||e("./_stream_duplex"),this instanceof l?void(// legacy -this._readableState=new d(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),O.call(this)):new l(t)}function p(e,t,n,r,o){var i=e._readableState;if(null===t)i.reading=!1,m(e,i);else{var s;o||(s=u(i,t)),s?e.emit("error",s):i.objectMode||t&&0>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function h(e,t){return 0>=e||0===t.length&&t.ended?0:t.objectMode?1:e===e?(e>t.highWaterMark&&(t.highWaterMark=g(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0)):t.flowing&&t.length?t.buffer.head.data.length:t.length;// If we're asking for more than the current hwm, then raise the hwm. -// Don't have enough -}// you can override either this method, or the async _read(n) below. -function m(e,t){if(!t.ended){if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,b(e)}}// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function b(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(z("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?P.nextTick(y,e):y(e))}function y(e){z("emit readable"),e.emit("readable"),k(e)}// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function _(e,t){t.readingMore||(t.readingMore=!0,P.nextTick(w,e,t))}function w(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=L(e,t.buffer,t.decoder),n}// Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function L(e,t,n){var r;return ei.length?i.length:e;if(a+=s===i.length?i:i.slice(0,e),e-=s,0===e){s===i.length?(++o,t.head=r.next?r.next:t.tail=null):(t.head=r,r.data=i.slice(s));break}++o}return t.length-=o,a}// Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function R(e,t){var r=N.allocUnsafe(e),o=t.head,a=1;for(o.data.copy(r),e-=o.data.length;o=o.next;){var i=o.data,s=e>i.length?i.length:e;if(i.copy(r,r.length-e,0,s),e-=s,0===e){s===i.length?(++a,t.head=o.next?o.next:t.tail=null):(t.head=o,o.data=i.slice(s));break}++a}return t.length-=a,r}function A(e){var t=e._readableState;// If we get here before consuming all the bytes, then that is a -// bug in node. Should never happen. -if(0*/n.exports=l;/**/var M,j=e("isarray");/**/ /**/l.ReadableState=d;/**/var U=e("events").EventEmitter,D=function(e,t){return e.listeners(t).length},O=e("./internal/streams/stream"),N=e("safe-buffer").Buffer,W=o.Uint8Array||function(){},q=e("core-util-is");q.inherits=e("inherits");/**/ /**/var F=e("util"),z=void 0;z=F&&F.debuglog?F.debuglog("stream"):function(){};/**/var H,$=e("./internal/streams/BufferList"),G=e("./internal/streams/destroy");q.inherits(l,O);var Y=["error","close","destroy","pause","resume"];Object.defineProperty(l.prototype,"destroyed",{get:function e(){return void 0!==this._readableState&&this._readableState.destroyed},set:function t(e){// we ignore the value if the stream -// has not been initialized yet -this._readableState&&(// backward compatibility, the user is explicitly -// managing destroyed -this._readableState.destroyed=e)}}),l.prototype.destroy=G.destroy,l.prototype._undestroy=G.undestroy,l.prototype._destroy=function(e,t){this.push(null),t(e)},l.prototype.push=function(e,t){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof e&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=N.from(e,t),t=""),n=!0),p(this,e,t,!1,n)},l.prototype.unshift=function(e){return p(this,e,null,!0,!1)},l.prototype.isPaused=function(){return!1===this._readableState.flowing},l.prototype.setEncoding=function(t){return H||(H=e("string_decoder/").StringDecoder),this._readableState.decoder=new H(t),this._readableState.encoding=t,this};// set up data events if they are asked for -// Ensure readable listeners eventually get something -// exposed for testing purposes only. -l.prototype.read=function(e){z("read",e),e=parseInt(e,10);var t=this._readableState,r=e;// if we're doing read(0) to trigger a readable event, but we -// already have a bunch of data in the buffer, then just trigger -// the 'readable' event and move on. -if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return z("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?A(this):b(this),null;// if we've ended, and we're now clear, then finish it up. -if(e=h(e,t),0===e&&t.ended)return 0===t.length&&A(this),null;// All the actual chunk generation logic needs to be -// *below* the call to _read. The reason is that in certain -// synthetic stream cases, such as passthrough streams, _read -// may be a completely synchronous operation which may change -// the state of the read buffer, providing enough data when -// before there was *not* enough. -// -// So, the steps are: -// 1. Figure out what the state of things will be after we do -// a read from the buffer. -// -// 2. If that resulting state will trigger a _read, then call _read. -// Note that this may be asynchronous, or synchronous. Yes, it is -// deeply ugly to write APIs this way, but that still doesn't mean -// that the Readable class should behave improperly, as streams are -// designed to be sync/async agnostic. -// Take note if the _read call is sync or async (ie, if the read call -// has returned yet), so that we know whether or not it's safe to emit -// 'readable' etc. -// -// 3. Actually pull the requested chunks out of the buffer and return. -// if we need a readable event, then we need to do some reading. -var o=t.needReadable;z("need readable",o),(0===t.length||t.length-e Introduce a guard on increasing awaitDrain. -function i(t){z("ondata"),y=!1;var n=e.write(t);!1!==n||y||((1===f.pipesCount&&f.pipes===e||1*/ /**/ // This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -s.inherits=e("inherits"),s.inherits(r,i),r.prototype.push=function(e,t){return this._transformState.needTransform=!1,i.prototype.push.call(this,e,t)},r.prototype._transform=function(){throw new Error("_transform() is not implemented")},r.prototype._write=function(e,t,n){var r=this._transformState;if(r.writecb=n,r.writechunk=e,r.writeencoding=t,!r.transforming){var o=this._readableState;(r.needTransform||o.needReadable||o.length*/ /* */ // It seems a linked list but it is not -// there will be only 2 of these for each stream -function i(e){var t=this;this.next=null,this.entry=null,this.finish=function(){E(t,e)}}/* */ /**/function s(e){return j.from(e)}function d(e){return j.isBuffer(e)||e instanceof U}/**/function l(){}function p(n,r){A=A||e("./_stream_duplex"),n=n||{};// Duplex streams are both readable and writable, but share -// the same options object. -// However, some cases require setting options to different -// values for the readable and the writable sides of the duplex stream. -// These options can be provided separately as readableXXX and writableXXX. -var o=r instanceof A;// object stream flag to indicate whether or not this stream -// contains buffers or objects. -this.objectMode=!!n.objectMode,o&&(this.objectMode=this.objectMode||!!n.writableObjectMode);// the point at which write() starts returning false -// Note: 0 is a valid value, means that we always return false if -// the entire buffer is not flushed immediately on write() -var a=n.highWaterMark,s=n.writableHighWaterMark,d=this.objectMode?16:16384;this.highWaterMark=a||0===a?a:o&&(s||0===s)?s:d,this.highWaterMark=t(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;// should we decode strings into buffers before passing to _write? -// this is here so that some node-core streams can optimize string -// handling at a lower level. -var l=!1===n.decodeStrings;// Crypto is kind of old and crusty. Historically, its default string -// encoding is 'binary' so we have to make this configurable. -// Everything else in the universe uses 'utf8', though. -// not an actual buffer we keep track of, but a measurement -// of how much we're waiting to get pushed to some underlying -// socket or file. -// a flag to see when we're in the middle of a write. -// when true all writes will be buffered until .uncork() call -// a flag to be able to tell if the onwrite cb is called immediately, -// or on a later tick. We set this to true at first, because any -// actions that shouldn't happen until "later" should generally also -// not happen before the first write call. -// a flag to know if we're processing previously buffered items, which -// may call the _write() callback in the same tick, so that we don't -// end up in an overlapped onwrite situation. -// the callback that's passed to _write(chunk,cb) -// the callback that the user supplies to write(chunk,encoding,cb) -// the amount that is being written when _write is called. -// number of pending user-supplied write callbacks -// this must be 0 before 'finish' can be emitted -// emit prefinish if the only thing we're waiting for is _write cbs -// This is relevant for synchronous Transform streams -// True if the error was already emitted and should not be thrown again -// count buffered requests -// allocate the first CorkedRequest, there is always -// one allocated and free to use, and we maintain at most two -this.decodeStrings=!l,this.defaultEncoding=n.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){_(r,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new i(this)}function c(t){// Writable ctor is applied to Duplexes, too. -// `realHasInstance` is necessary because using plain `instanceof` -// would return false, as no `_writableState` property is attached. -// Trying to use the custom `instanceof` for Writable here will also break the -// Node.js LazyTransform implementation, which has a non-trivial getter for -// `_writableState` that would lead to infinite recursion. -return A=A||e("./_stream_duplex"),O.call(c,this)||this instanceof A?void(// legacy. -this._writableState=new p(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),M.call(this)):new c(t)}// Otherwise people can pipe Writable streams, which is just wrong. -function u(e,t){var n=new Error("write after end");// TODO: defer error events consistently everywhere, not just the cb -e.emit("error",n),R.nextTick(t,n)}// Checks that a user-supplied chunk is valid, especially for the particular -// mode the stream is in. Currently this means that `null` is never accepted -// and undefined/non-string values are only allowed in object mode. -function f(e,t,n,r){var o=!0,a=!1;return null===n?a=new TypeError("May not write null values to stream"):"string"!=typeof n&&void 0!==n&&!t.objectMode&&(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),R.nextTick(r,a),o=!1),o}function g(e,t,n){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=j.from(t,n)),t}// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function h(e,t,n,r,o,a){if(!n){var i=g(t,r,o);r!==i&&(n=!0,o="buffer",r=i)}var s=t.objectMode?1:r.length;t.length+=s;var d=t.length*/n.exports=c;var A,B=!r.browser&&-1<["v0.10","v0.9."].indexOf(r.version.slice(0,5))?a:R.nextTick;/**/ /**/c.WritableState=p;/**/var I=e("core-util-is");I.inherits=e("inherits");/**/ /**/var P={deprecate:e("util-deprecate")},M=e("./internal/streams/stream"),j=e("safe-buffer").Buffer,U=o.Uint8Array||function(){},D=e("./internal/streams/destroy");/**/ /**/I.inherits(c,M),p.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(p.prototype,"buffer",{get:P.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}();// Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. -var O;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(O=Function.prototype[Symbol.hasInstance],Object.defineProperty(c,Symbol.hasInstance,{value:function t(e){return!!O.call(this,e)||!(this!==c)&&e&&e._writableState instanceof p}})):O=function(e){return e instanceof this},c.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},c.prototype.write=function(e,t,n){var r=this._writableState,o=!1,a=!r.objectMode&&d(e);return a&&!j.isBuffer(e)&&(e=s(e)),"function"==typeof t&&(n=t,t=null),a?t="buffer":!t&&(t=r.defaultEncoding),"function"!=typeof n&&(n=l),r.ended?u(this,n):(a||f(this,r,e,n))&&(r.pendingcb++,o=h(this,r,a,e,t,n)),o},c.prototype.cork=function(){var e=this._writableState;e.corked++},c.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.finished&&!e.bufferProcessing&&e.bufferedRequest&&S(this,e))},c.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(-1<["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(c.prototype,"writableHighWaterMark",{// making it explicit this property is not enumerable -// because otherwise some prototype manipulation in -// userland will fail -enumerable:!1,get:function e(){return this._writableState.highWaterMark}}),c.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},c.prototype._writev=null,c.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!==e&&e!==void 0&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||L(this,r,n)},Object.defineProperty(c.prototype,"destroyed",{get:function e(){return void 0!==this._writableState&&this._writableState.destroyed},set:function t(e){// we ignore the value if the stream -// has not been initialized yet -this._writableState&&(// backward compatibility, the user is explicitly -// managing destroyed -this._writableState.destroyed=e)}}),c.prototype.destroy=D.destroy,c.prototype._undestroy=D.undestroy,c.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,e("_process"),"undefined"==typeof global?"undefined"==typeof self?"undefined"==typeof window?{}:window:self:global,e("timers").setImmediate)},{"./_stream_duplex":20,"./internal/streams/destroy":26,"./internal/streams/stream":27,_process:3,"core-util-is":6,inherits:13,"process-nextick-args":18,"safe-buffer":33,timers:37,"util-deprecate":39}],25:[function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t,n){e.copy(t,n)}var o=e("safe-buffer").Buffer,a=e("util");t.exports=function(){function e(){n(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};0>>0),n=this.head,a=0;n;)r(n.data,t,a),a+=n.data.length,n=n.next;return t},e}(),a&&a.inspect&&a.inspect.custom&&(t.exports.prototype[a.inspect.custom]=function(){var e=a.inspect({length:this.length});return this.constructor.name+" "+e})},{"safe-buffer":33,util:2}],26:[function(e,t){"use strict";/**/ /**/ // undocumented cb() API, needed for core, not for public API -function n(e,t){e.emit("error",t)}var r=e("process-nextick-args");t.exports={destroy:function(e,t){var o=this,a=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return a||i?(t?t(e):e&&(!this._writableState||!this._writableState.errorEmitted)&&r.nextTick(n,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(r.nextTick(n,o,e),o._writableState&&(o._writableState.errorEmitted=!0)):t&&t(e)}),this);// we set destroyed to true before firing error callbacks in order -// to make it re-entrance safe in case destroy() is called within callbacks -},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{"process-nextick-args":18}],27:[function(e,t){t.exports=e("events").EventEmitter},{events:9}],28:[function(e,t){var n={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},{}],29:[function(e,t){t.exports=e("./readable").PassThrough},{"./readable":30}],30:[function(e,t,n){n=t.exports=e("./lib/_stream_readable.js"),n.Stream=n,n.Readable=n,n.Writable=e("./lib/_stream_writable.js"),n.Duplex=e("./lib/_stream_duplex.js"),n.Transform=e("./lib/_stream_transform.js"),n.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":20,"./lib/_stream_passthrough.js":21,"./lib/_stream_readable.js":22,"./lib/_stream_transform.js":23,"./lib/_stream_writable.js":24}],31:[function(e,t){t.exports=e("./readable").Transform},{"./readable":30}],32:[function(e,t){t.exports=e("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":24}],33:[function(e,t,n){// alternative to using Object.keys for old browsers -function r(e,t){for(var n in e)t[n]=e[n]}function o(e,t,n){return i(e,t,n)}// Copy static methods from Buffer -/* eslint-disable node/no-deprecated-api */var a=e("buffer"),i=a.Buffer;i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=a:(r(a,n),n.Buffer=o),r(i,o),o.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,n)},o.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=i(e);return void 0===t?r.fill(0):"string"==typeof n?r.fill(t,n):r.fill(t),r},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return a.SlowBuffer(e)}},{buffer:4}],34:[function(e,t){(function(n){/** - * WebRTC peer connection. Same API as node core `net.Socket`, plus a few extra methods. - * Duplex stream. - * @param {Object} opts - */function r(e){var t=this;if(!(t instanceof r))return new r(e);if(t._debug("new peer %o",e),e||(e={}),e.allowHalfOpen=!1,null==e.highWaterMark&&(e.highWaterMark=1048576),c.Duplex.call(t,e),t.initiator=e.initiator||!1,t.channelConfig=e.channelConfig||r.channelConfig,t.channelName=e.initiator?e.channelName||s(160):null,t.config=e.config||r.config,t.constraints=e.constraints||r.constraints,t.offerConstraints=e.offerConstraints,t.answerConstraints=e.answerConstraints,t.reconnectTimer=e.reconnectTimer||!1,t.sdpTransform=e.sdpTransform||function(e){return e},t.stream=e.stream||!1,t.trickle=void 0===e.trickle||e.trickle,t.destroyed=!1,t.connected=!1,t.remoteAddress=void 0,t.remoteFamily=void 0,t.remotePort=void 0,t.localAddress=void 0,t.localPort=void 0,t._isWrtc=!!e.wrtc,t._wrtc=e.wrtc||i(),!t._wrtc)if("undefined"==typeof window)throw new Error("No WebRTC support: Specify `opts.wrtc` option in this environment");else throw new Error("No WebRTC support: Not a supported browser");t._maxBufferedAmount=e.highWaterMark,t._pcReady=!1,t._channelReady=!1,t._iceComplete=!1,t._channel=null,t._pendingCandidates=[],t._chunk=null,t._cb=null,t._interval=null,t._reconnectTimeout=null,t._pc=new t._wrtc.RTCPeerConnection(t.config,t.constraints),t._pc.oniceconnectionstatechange=t._onIceConnectionStateChange.bind(t),t._pc.onsignalingstatechange=t._onSignalingStateChange.bind(t),t._pc.onicecandidate=t._onIceCandidate.bind(t),t.stream&&t._pc.addStream(t.stream),t._pc.onaddstream=t._onAddStream.bind(t),t.initiator?(t._setupData({channel:t._pc.createDataChannel(t.channelName,t.channelConfig)}),t._pc.onnegotiationneeded=p(t._createOffer.bind(t)),("undefined"==typeof window||!window.webkitRTCPeerConnection)&&t._pc.onnegotiationneeded()):t._pc.ondatachannel=t._setupData.bind(t),t.on("finish",function(){t.connected?setTimeout(function(){t._destroy()},100):t.once("connect",function(){setTimeout(function(){t._destroy()},100)})})}function o(){}t.exports=r;var a=e("debug")("simple-peer"),i=e("get-browser-rtc"),s=e("hat"),d=e("inherits"),l=e("is-typedarray"),p=e("once"),c=e("stream");/** - * Expose config, constraints, and data channel config for overriding all Peer - * instances. Otherwise, just set opts.config, opts.constraints, or opts.channelConfig - * when constructing a Peer. - */ /** - * Send text/binary data to the remote peer. - * @param {TypedArrayView|ArrayBuffer|Buffer|string|Blob|Object} chunk - */d(r,c.Duplex),r.WEBRTC_SUPPORT=!!i(),r.config={iceServers:[{url:"stun:23.21.150.121",// deprecated, replaced by `urls` -urls:"stun:23.21.150.121"}]},r.constraints={},r.channelConfig={},Object.defineProperty(r.prototype,"bufferSize",{get:function t(){var e=this;return e._channel&&e._channel.bufferedAmount||0}}),r.prototype.address=function(){var e=this;return{port:e.localPort,family:"IPv4",address:e.localAddress}},r.prototype.signal=function(e){function t(e){try{n._pc.addIceCandidate(new n._wrtc.RTCIceCandidate(e),o,n._onError.bind(n))}catch(e){n._destroy(new Error("error adding candidate: "+e.message))}}var n=this;if(n.destroyed)throw new Error("cannot signal after peer is destroyed");if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e={}}n._debug("signal()"),e.sdp&&n._pc.setRemoteDescription(new n._wrtc.RTCSessionDescription(e),function(){n.destroyed||("offer"===n._pc.remoteDescription.type&&n._createAnswer(),n._pendingCandidates.forEach(t),n._pendingCandidates=[])},n._onError.bind(n)),e.candidate&&(n._pc.remoteDescription?t(e.candidate):n._pendingCandidates.push(e.candidate)),e.sdp||e.candidate||n._destroy(new Error("signal() called with invalid signal data"))},r.prototype.send=function(e){var t=this;l.strict(e)||e instanceof ArrayBuffer||n.isBuffer(e)||"string"==typeof e||"undefined"!=typeof Blob&&e instanceof Blob||(e=JSON.stringify(e)),n.isBuffer(e)&&t._isWrtc&&(e=new Uint8Array(e));var r=e.length||e.byteLength||e.size;t._channel.send(e),t._debug("write: %d bytes",r)},r.prototype.destroy=function(e){var t=this;t._destroy(null,e)},r.prototype._destroy=function(e,t){var n=this;if(!n.destroyed){if(t&&n.once("close",t),n._debug("destroy (error: %s)",e&&e.message),n.readable=n.writable=!1,n._readableState.ended||n.push(null),n._writableState.finished||n.end(),n.destroyed=!0,n.connected=!1,n._pcReady=!1,n._channelReady=!1,n._chunk=null,n._cb=null,clearInterval(n._interval),clearTimeout(n._reconnectTimeout),n._pc){try{n._pc.close()}catch(e){}n._pc.oniceconnectionstatechange=null,n._pc.onsignalingstatechange=null,n._pc.onicecandidate=null}if(n._channel){try{n._channel.close()}catch(e){}n._channel.onmessage=null,n._channel.onopen=null,n._channel.onclose=null}n._pc=null,n._channel=null,e&&n.emit("error",e),n.emit("close")}},r.prototype._setupData=function(e){var t=this;t._channel=e.channel,t.channelName=t._channel.label,t._channel.binaryType="arraybuffer",t._channel.onmessage=t._onChannelMessage.bind(t),t._channel.onopen=t._onChannelOpen.bind(t),t._channel.onclose=t._onChannelClose.bind(t)},r.prototype._read=function(){},r.prototype._write=function(e,t,n){var r=this;if(r.destroyed)return n(new Error("cannot write after peer is destroyed"));if(r.connected){try{r.send(e)}catch(e){return r._onError(e)}r._channel.bufferedAmount>r._maxBufferedAmount?(r._debug("start backpressure: bufferedAmount %d",r._channel.bufferedAmount),r._cb=n):n(null)}else r._debug("write before connect"),r._chunk=e,r._cb=n},r.prototype._createOffer=function(){var e=this;e.destroyed||e._pc.createOffer(function(t){if(!e.destroyed){t.sdp=e.sdpTransform(t.sdp),e._pc.setLocalDescription(t,o,e._onError.bind(e));var n=function(){var n=e._pc.localDescription||t;e._debug("signal"),e.emit("signal",{type:n.type,sdp:n.sdp})};e.trickle||e._iceComplete?n():e.once("_iceComplete",n)}},e._onError.bind(e),e.offerConstraints)},r.prototype._createAnswer=function(){var e=this;e.destroyed||e._pc.createAnswer(function(t){if(!e.destroyed){t.sdp=e.sdpTransform(t.sdp),e._pc.setLocalDescription(t,o,e._onError.bind(e));var n=function(){var n=e._pc.localDescription||t;e._debug("signal"),e.emit("signal",{type:n.type,sdp:n.sdp})};e.trickle||e._iceComplete?n():e.once("_iceComplete",n)}},e._onError.bind(e),e.answerConstraints)},r.prototype._onIceConnectionStateChange=function(){var e=this;if(!e.destroyed){var t=e._pc.iceGatheringState,n=e._pc.iceConnectionState;e._debug("iceConnectionStateChange %s %s",t,n),e.emit("iceConnectionStateChange",t,n),("connected"===n||"completed"===n)&&(clearTimeout(e._reconnectTimeout),e._pcReady=!0,e._maybeReady()),"disconnected"===n&&(e.reconnectTimer?(clearTimeout(e._reconnectTimeout),e._reconnectTimeout=setTimeout(function(){e._destroy()},e.reconnectTimer)):e._destroy()),"failed"===n&&e._destroy(),"closed"===n&&e._destroy()}},r.prototype._maybeReady=function(){function e(e){if(e.forEach(function(e){"remotecandidate"===e.type&&"host"===e.candidateType?(t.remoteAddress=e.ipAddress,t.remotePort=+e.portNumber,t.remoteFamily="IPv4",t._debug("connect remote: %s:%s (%s)",t.remoteAddress,t.remotePort,t.remoteFamily)):"localcandidate"===e.type&&"host"===e.candidateType&&(t.localAddress=e.ipAddress,t.localPort=+e.portNumber,t._debug("connect local: %s:%s",t.localAddress,t.localPort))}),t._connecting=!1,t.connected=!0,t._chunk){try{t.send(t._chunk)}catch(e){return t._onError(e)}t._chunk=null,t._debug("sent chunk from \"write before connect\"");var n=t._cb;t._cb=null,n(null)}t._interval=setInterval(function(){if(t._cb&&t._channel&&!(t._channel.bufferedAmount>t._maxBufferedAmount)){t._debug("ending backpressure: bufferedAmount %d",t._channel.bufferedAmount);var e=t._cb;t._cb=null,e(null)}},150),t._interval.unref&&t._interval.unref(),t._debug("connect"),t.emit("connect")}var t=this;t._debug("maybeReady pc %s channel %s",t._pcReady,t._channelReady);t.connected||t._connecting||!t._pcReady||!t._channelReady||(t._connecting=!0,t._pc.getStats?"undefined"==typeof window||!window.mozRTCPeerConnection?t._pc.getStats(function(t){var n=[];t.result().forEach(function(e){var t={};e.names().forEach(function(n){t[n]=e.stat(n)}),t.id=e.id,t.type=e.type,t.timestamp=e.timestamp,n.push(t)}),e(n)}):t._pc.getStats(null,function(t){var n=[];t.forEach(function(e){n.push(e)}),e(n)},t._onError.bind(t)):e([]))},r.prototype._onSignalingStateChange=function(){var e=this;e.destroyed||(e._debug("signalingStateChange %s",e._pc.signalingState),e.emit("signalingStateChange",e._pc.signalingState))},r.prototype._onIceCandidate=function(e){var t=this;t.destroyed||(e.candidate&&t.trickle?t.emit("signal",{candidate:{candidate:e.candidate.candidate,sdpMLineIndex:e.candidate.sdpMLineIndex,sdpMid:e.candidate.sdpMid}}):!e.candidate&&(t._iceComplete=!0,t.emit("_iceComplete")))},r.prototype._onChannelMessage=function(e){var t=this;if(!t.destroyed){var r=e.data;if(t._debug("read: %d bytes",r.byteLength||r.length),r instanceof ArrayBuffer)r=new n(r),t.push(r);else{try{r=JSON.parse(r)}catch(e){}t.emit("data",r)}}},r.prototype._onChannelOpen=function(){var e=this;e.connected||e.destroyed||(e._debug("on channel open"),e._channelReady=!0,e._maybeReady())},r.prototype._onChannelClose=function(){var e=this;e.destroyed||(e._debug("on channel close"),e._destroy())},r.prototype._onAddStream=function(e){var t=this;t.destroyed||(t._debug("on add stream"),t.emit("stream",e.stream))},r.prototype._onError=function(e){var t=this;t.destroyed||(t._debug("error %s",e.message||e),t._destroy(e))},r.prototype._debug=function(){var e=this,t=[].slice.call(arguments),n=e.channelName&&e.channelName.substring(0,7);t[0]="["+n+"] "+t[0],a.apply(null,t)}}).call(this,e("buffer").Buffer)},{buffer:4,debug:7,"get-browser-rtc":10,hat:11,inherits:13,"is-typedarray":15,once:17,stream:35}],35:[function(e,t){// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. -function n(){r.call(this)}t.exports=n;var r=e("events").EventEmitter,o=e("inherits");// Backwards-compat with node 0.4.x -o(n,r),n.Readable=e("readable-stream/readable.js"),n.Writable=e("readable-stream/writable.js"),n.Duplex=e("readable-stream/duplex.js"),n.Transform=e("readable-stream/transform.js"),n.PassThrough=e("readable-stream/passthrough.js"),n.Stream=n,n.prototype.pipe=function(e,t){function n(t){e.writable&&!1===e.write(t)&&l.pause&&l.pause()}function o(){l.readable&&l.resume&&l.resume()}function a(){p||(p=!0,e.end())}function i(){p||(p=!0,"function"==typeof e.destroy&&e.destroy())}// don't leave dangling pipes when there are errors. -function s(e){if(d(),0===r.listenerCount(this,"error"))throw e;// Unhandled stream error in pipe. -}// remove all the event listeners that were added. -function d(){l.removeListener("data",n),e.removeListener("drain",o),l.removeListener("end",a),l.removeListener("close",i),l.removeListener("error",s),e.removeListener("error",s),l.removeListener("end",d),l.removeListener("close",d),e.removeListener("close",d)}var l=this;l.on("data",n),e.on("drain",o),e._isStdio||t&&!1===t.end||(l.on("end",a),l.on("close",i));var p=!1;// Allow for unix-like usage: A.pipe(B).pipe(C) -return l.on("error",s),e.on("error",s),l.on("end",d),l.on("close",d),e.on("close",d),e.emit("pipe",l),e}},{events:9,inherits:13,"readable-stream/duplex.js":19,"readable-stream/passthrough.js":29,"readable-stream/readable.js":30,"readable-stream/transform.js":31,"readable-stream/writable.js":32}],36:[function(e,t,n){// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -"use strict";/**/function r(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;// undefined -e=(""+e).toLowerCase(),t=!0;}}// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function o(e){var t=r(e);if("string"!=typeof t&&(b.isEncoding===y||!y(e)))throw new Error("Unknown encoding: "+e);return t||e}// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -function a(e){this.encoding=o(e);var t;switch(this.encoding){case"utf16le":this.text=c,this.end=u,t=4;break;case"utf8":this.fillLast=p,t=4;break;case"base64":this.text=f,this.end=g,t=3;break;default:return this.write=h,void(this.end=m);}this.lastNeed=0,this.lastTotal=0,this.lastChar=b.allocUnsafe(t)}// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. If an invalid byte is detected, -2 is returned. -function s(e){if(127>=e)return 0;return 6==e>>5?2:14==e>>4?3:30==e>>3?4:2==e>>6?-1:-2}// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function d(e,t,n){var r=t.length-1;if(r=r)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function f(e,t){var r=(e.length-t)%3;return 0==r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1==r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function g(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function h(e){return e.toString(this.encoding)}function m(e){return e&&e.length?this.write(e):""}var b=e("safe-buffer").Buffer,y=b.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1;}};/**/ // Returns only complete characters in a Buffer -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -n.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(t=this.fillLast(e),void 0===t)return"";n=this.lastNeed,this.lastNeed=0}else n=0;return narguments.length)&&s.call(arguments,1);return d[t]=!0,a(function(){d[t]&&(r?e.apply(null,r):e.call(null),n.clearImmediate(t))}),t},n.clearImmediate="function"==typeof r?r:function(e){delete d[e]}}).call(this,e("timers").setImmediate,e("timers").clearImmediate)},{"process/browser.js":38,timers:37}],38:[function(e,t,n){arguments[4][3][0].apply(n,arguments)},{dup:3}],39:[function(e,t){(function(e){/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public - */ /** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private - */function n(t){// accessing global.localStorage can trigger a DOMException in sandboxed iframes -try{if(!e.localStorage)return!1}catch(e){return!1}var n=e.localStorage[t];return null!=n&&"true"===(n+"").toLowerCase()}/** - * Module exports. - */t.exports=function(e,t){function r(){if(!o){if(n("throwDeprecation"))throw new Error(t);else n("traceDeprecation")?console.trace(t):console.warn(t);o=!0}return e.apply(this,arguments)}if(n("noDeprecation"))return e;var o=!1;return r}}).call(this,"undefined"==typeof global?"undefined"==typeof self?"undefined"==typeof window?{}:window:self:global)},{}],40:[function(e,t){// created by @HenrikJoreteg -var n,r;window.mozRTCPeerConnection||navigator.mozGetUserMedia?(n="moz",r=parseInt(navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1],10)):(window.webkitRTCPeerConnection||navigator.webkitGetUserMedia)&&(n="webkit",r=navigator.userAgent.match(/Chrom(e|ium)/)&&parseInt(navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)[2],10));var o=window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection,a=window.mozRTCIceCandidate||window.RTCIceCandidate,i=window.mozRTCSessionDescription||window.RTCSessionDescription,s=window.webkitMediaStream||window.MediaStream,d="https:"===window.location.protocol&&("webkit"===n&&26<=r||"moz"===n&&33<=r),l=window.AudioContext||window.webkitAudioContext,p=document.createElement("video"),c=p&&p.canPlayType&&"probably"===p.canPlayType("video/webm; codecs=\"vp8\", vorbis"),u=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.msGetUserMedia||navigator.mozGetUserMedia;// export support flags and constructors.prototype && PC -t.exports={prefix:n,browserVersion:r,support:!!o&&!!u,// new support style -supportRTCPeerConnection:!!o,supportVp8:c,supportGetUserMedia:!!u,supportDataChannel:!!(o&&o.prototype&&o.prototype.createDataChannel),supportWebAudio:!!(l&&l.prototype.createMediaStreamSource),supportMediaStream:!!(s&&s.prototype.removeTrack),supportScreenSharing:!!d,// constructors -AudioContext:l,PeerConnection:o,SessionDescription:i,IceCandidate:a,MediaStream:s,getUserMedia:u}},{}],41:[function(e,t){function n(e,t){function r(){for(var t=Array(arguments.length),n=0;n=r.numConnectedClients&&!r.ready&&(r.ready=!0,r.emit("upgrade"))}),this.on("upgrade",function(){this.opts.autoUpgrade&&(this.usePeerConnection=!0),"function"==typeof this.cb&&this.cb()})}var o=e("simple-peer"),a=e("component-emitter"),i=e("hat"),s=e("webrtcsupport"),d=a.prototype.emit;a(r.prototype),r.prototype.setupPeerEvents=function(e){var t=this;e.on("connect",function(e){t.emit("peer_ready",e)});var n=this;e.on("data",function(e){if(!this.destroyed)if(e instanceof Uint8Array){var t=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);d.apply(n,["file-data",t])}else d.apply(n,[e.evt,e.cb])}),e.on("stream",function(e){t.emit("stream",e)})},r.prototype.on=function(e,t){var n=this;this.socket.addEventListener(e,function(t){d.call(n,e,t)}),this.addEventListener(e,t)},r.prototype.emit=function(e,t){this._peerEvents.hasOwnProperty(e)||(t||{}).fromSocket?d.apply(this,arguments):this.usePeerConnection||!this.useSockets?t instanceof ArrayBuffer?this._write(n.from(t)):this._send({evt:e,cb:t}):this.socket.emit(e,t)},r.prototype._send=function(e){for(var t in this._peers){var n=this._peers[t];n._channelReady&&n.send(e)}},r.prototype._write=function(e){for(var t in this._peers){var n=this._peers[t];n._channelReady&&n.write(e)}},r.prototype.disconnect=function(){for(var e in this._peers){var t=this._peers[e];t.destroy(),this.socket.disconnect()}},r.prototype.upgrade=function(){this.usePeerConnection=!0},t.exports=r}).call(this,e("buffer").Buffer)},{buffer:4,"component-emitter":5,hat:11,"simple-peer":34,webrtcsupport:40}]},{},[])("/")}); \ No newline at end of file From 526a4bbc6d7e8b909f59e6158778e450c6d04759 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 29 May 2020 20:26:24 +0530 Subject: [PATCH 004/127] Add close function to the wrapper --- public/views/FileTransfer.svelte | 2 +- server/index.js | 2 +- utils/socket.js | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/public/views/FileTransfer.svelte b/public/views/FileTransfer.svelte index b2888e34..2c0a6d1e 100644 --- a/public/views/FileTransfer.svelte +++ b/public/views/FileTransfer.svelte @@ -335,7 +335,7 @@ * Component being unmounted */ return () => { - socket.disconnect(); + socket.close(); }; }); diff --git a/server/index.js b/server/index.js index 8a2c49d6..23ec7407 100644 --- a/server/index.js +++ b/server/index.js @@ -66,7 +66,7 @@ wss.on('connection', (ws) => { const user = room.getSocketFromName(socket.name); if (user) { - ws.close(1, "User with same name exists"); + socket.close(1000, 'User with same name exists'); return; } } diff --git a/utils/socket.js b/utils/socket.js index dccbdf0a..dd90e529 100644 --- a/utils/socket.js +++ b/utils/socket.js @@ -48,6 +48,10 @@ class Socket { } } + close(code, reason) { + this.socket.close(code, reason); + } + get id() { return this.socket.id; } From 285d58ff386bea02f3dd74659a7eb6b7fbd2899a Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 16:54:17 +0530 Subject: [PATCH 005/127] Add WebTorrent info hash exchange on server --- .env | 2 ++ constants.js | 2 ++ server/index.js | 55 ++++++++++++++++++------------------------------- utils/socket.js | 2 +- 4 files changed, 25 insertions(+), 36 deletions(-) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 00000000..80fb52aa --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +SERVER_PORT=3030 +WS_HOST=ws://localhost:3030 \ No newline at end of file diff --git a/constants.js b/constants.js index 6f673f34..1a0a71fa 100644 --- a/constants.js +++ b/constants.js @@ -5,4 +5,6 @@ module.exports = { USER_LEAVE: 'user-leave', FILE_INIT: 'file-init', FILE_STATUS: 'file-status', + FILE_TORRENT: 'file-torrent', + ERR_SAME_NAME: 'User with same name exists', }; \ No newline at end of file diff --git a/server/index.js b/server/index.js index 23ec7407..6538d845 100644 --- a/server/index.js +++ b/server/index.js @@ -1,6 +1,5 @@ const express = require('express'); const http = require('http'); -const path = require('path'); const WebSocket = require('ws'); const Socket = require('../utils/socket'); const log = require('./log'); @@ -12,6 +11,10 @@ const server = http.createServer(app); const wss = new WebSocket.Server({ server }); const rooms = {}; +if (process.env.NODE_ENV === 'production') { + require('dotenv').config(); +} + class Room { constructor(name) { this.sockets = []; @@ -36,7 +39,7 @@ class Room { } get socketsData() { - return this.sockets.map(({ name, isWebRTC }) => ({ name, isWebRTC })); + return this.sockets.map(({ name, peerId }) => ({ name, peerId })); } getSocketFromName(name) { @@ -56,17 +59,16 @@ wss.on('connection', (ws) => { let room; socket.listen(constants.JOIN, (data) => { - const { roomName, name, isWebRTC } = data; + const { roomName, name, peerId } = data; socket.name = name; - socket.isWebRTC = isWebRTC; + socket.peerId = peerId; room = rooms[roomName]; if (room) { const user = room.getSocketFromName(socket.name); - if (user) { - socket.close(1000, 'User with same name exists'); + socket.close(1000, constants.ERR_SAME_NAME); return; } } @@ -81,7 +83,8 @@ wss.on('connection', (ws) => { room.broadcast(constants.USER_JOIN, room.socketsData); }); - socket.on('close', () => { + socket.on('close', data => { + if (data.reason === constants.ERR_SAME_NAME) return; if (!room) return; log(`${socket.name} has left ${room.name}`); @@ -99,7 +102,11 @@ wss.on('connection', (ws) => { socket.listen(constants.FILE_INIT, (data) => { // TODO: Prevent init from multiple sockets if a sender is already there - log(`${socket.name} has initiated file transfer`); + if (data.end) { + log(`File transfer just finished!`); + } else { + log(`${socket.name} has initiated file transfer`); + } room.sender = socket.name; room.broadcast(constants.FILE_INIT, data, [ socket.name ]); @@ -116,35 +123,13 @@ wss.on('connection', (ws) => { socket.listen(constants.CHUNK, (data) => { room.broadcast(constants.CHUNK, data, [ room.sender ]); }); -}); - -app.use(express.static('dist')); -app.use('/app(/*)?', (req, res) => { - res.sendFile(path.resolve(__dirname, '../dist/app.html')); -}); -app.use('/sw.js', (req, res) => { - res.sendFile(path.resolve(__dirname, '../dist/sw.js'), { - headers: { - 'Service-Worker-Allow': '/app' - } + socket.listen(constants.FILE_TORRENT, (data) => { + room.broadcast(constants.FILE_TORRENT, data, [ socket.name ]); }); }); - -const port = process.env.PORT ? process.env.PORT : 3030; -server.listen(port, () => { +const port = process.env.SERVER_PORT ? process.env.SERVER_PORT : 3030; +server.listen(port, '0.0.0.0', () => { log('listening on *:'+port); -}); - -if (process.env.NODE_ENV === 'production') { - // Redirect http to https - app.enable('trust proxy'); - app.use((req, res, next) => { - if (req.secure) { - next(); - } else { - res.redirect('https://' + req.headers.host + req.url); - } - }); -} \ No newline at end of file +}); \ No newline at end of file diff --git a/utils/socket.js b/utils/socket.js index dd90e529..042f23b6 100644 --- a/utils/socket.js +++ b/utils/socket.js @@ -4,7 +4,7 @@ class Socket { this.socket = socket; this.socket.binaryType = 'arraybuffer'; this.callbacks = {}; - this.isWebRTC = false; + this.peerId = ''; socket.addEventListener('message', msg => { let callback, data; From 93ba77be30972eecc6e308f48c3a58446b3eb630 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 16:58:10 +0530 Subject: [PATCH 006/127] Add WebTorrent support with WebSockets as fallback --- src/utils/fileShare.js | 201 +++++++++++++++++++++++++ src/utils/socketConnect.js | 26 ++++ src/utils/visualizer.js | 297 +++++++++++++++++++++++++++++++++++++ 3 files changed, 524 insertions(+) create mode 100644 src/utils/fileShare.js create mode 100644 src/utils/socketConnect.js create mode 100644 src/utils/visualizer.js diff --git a/src/utils/fileShare.js b/src/utils/fileShare.js new file mode 100644 index 00000000..b58a1b36 --- /dev/null +++ b/src/utils/fileShare.js @@ -0,0 +1,201 @@ +import constants from '../../constants'; + +const trackers = { + announce: ['wss://tracker.btorrent.xyz', 'wss://tracker.openwebtorrent.com'], +}; + +class FileShare { + + constructor(socket, torrentOpts) { + this.socket = socket; + this.torrentClient = new WebTorrent({ + tracker: { + ...trackers, + rtcConfig: { + iceServers: [ + { + 'urls': ['stun:stun.l.google.com:19305', 'stun:stun1.l.google.com:19305'] + } + ] + } + } + }); + } + + get isWebRTC() { + return WebTorrent.WEBRTC_SUPPORT; + } + + receiveFiles({ onMeta, onProgress, onDone }) { + let metaData = {}; + + this.socket.listen(constants.FILE_TORRENT, ({ infoHash, ...data }) => { + if (onMeta) { + metaData = data; + onMeta(data); + } + + this.torrentClient.add(infoHash, trackers, torrent => { + this._onTorrent({ torrent, onProgress, onDone }); + }); + }); + + let fileParts = []; + let size = 0, statProg = 0.25; + this.socket.listen(constants.FILE_INIT, (data) => { + if (data.end) { + // TODO: build the file + if (fileParts.length) { + callbacks.done(new Blob(fileParts)); + fileParts = []; + size = 0; + statProg = 0.25; + } + } + else { + metaData = data; + callbacks.meta(data); + } + }); + + this.socket.listen(constants.CHUNK, data => { + fileParts.push(data); + size += data.byteLength; + + const progress = size / metaData.size; + + callbacks.progress({ progress }); + + if (progress >= statProg) { + statProg += 0.15; + this.socket.send(constants.FILE_STATUS, { + progress: statProg, + peer: this.socket.name, + }); + } + }); + } + + _onTorrent({ torrent, onProgress, onDone }) { + let updateInterval; + + const update = () => { + onProgress(torrent); + + if (!updateInterval) { + updateInterval = setInterval(update, 500); + } + + if (!torrent.uploadSpeed && !torrent.downloadSpeed) { + onDone(); + torrent.destroy(); + clearInterval(updateInterval); + updateInterval = undefined; + } + } + + torrent.on('upload', update); + torrent.on('download', update); + torrent.on('done', () => { + onDone(torrent.files); + }); + } + + sendFileSocket({ file, numPeers, onMeta, onSocketProgress }) { + const reader = file.stream().getReader(); + const transferStatus = { + peers: Array(numPeers - 1), + progress: 0.25, + }; + let sharedSize = 0, progress = 0; + + const meta = [{ + name: file.name, + size: file.size, + }]; + + onMeta(meta); + + this.socket.send(constants.FILE_INIT, { + user: this.socket.name, + size: file.size, + meta, + }); + + return new Promise((resolve, reject) => { + + const stream = async () => { + const { done, value } = await reader.read(); + if (done) { + this.socket.off(constants.FILE_STATUS); + this.socket.send(constants.FILE_INIT, { + end: true, + }); + resolve(); + return; + } + + this.socket.send(constants.CHUNK, value.buffer); + sharedSize += value.byteLength; + progress = sharedSize / file.size; + + onSocketProgress({ progress }); + + if (transferStatus.peers.length === numPeers - 1 && progress < transferStatus.progress) { + setTimeout(stream, 1); + } + }; + + this.socket.listen(constants.FILE_STATUS, ({ peer, progress }) => { + if (progress !== transferStatus.progress) { + transferStatus.progress = progress; + transferStatus.peers = [ peer ]; + } else { + transferStatus.peers.push(peer); + } + + stream(); + }); + + stream(); + }); + } + + async sendFiles({ numPeers, input, useTorrent, onMeta, onSocketProgress, onTorrentProgress, onDone }) { + if (useTorrent) { + this.torrentClient.seed(input, trackers, torrent => { + this._onTorrent({ + torrent, + onProgress: onTorrentProgress, + onDone, + }); + + const filesMeta = torrent.files.map(file => ({ + name: file.name, + size: file.length, + })); + + onMeta(filesMeta); + this.socket.send(constants.FILE_TORRENT, { + infoHash: torrent.infoHash, + user: this.socket.name, + size: torrent.length, + meta: filesMeta, + }); + + }); + } + else { + if (!input) return; + input = input && (input.length ? [...input] : [ input ]); + + for(const file of input) { + await this.sendFileSocket({ file, numPeers, onMeta, onSocketProgress }); + } + + } + } + +} + +export default FileShare; \ No newline at end of file diff --git a/src/utils/socketConnect.js b/src/utils/socketConnect.js new file mode 100644 index 00000000..fd4bf9e1 --- /dev/null +++ b/src/utils/socketConnect.js @@ -0,0 +1,26 @@ +import Socket from '../../utils/socket'; +import constants from '../../constants'; +import FileShare from './fileShare'; + +/** + * Opens a socket connection to join a room + * @param {String} room Room to join + * @param {String} username Name of the user joining the room + */ +function socketConnect(room, username) { + const socket = new Socket(new WebSocket(process.env.WS_HOST)); + const fileShare = new FileShare(socket); + socket.name = username; + + socket.on('open', () => { + socket.send(constants.JOIN, { + roomName: room, + name: username, + peerId: fileShare.isWebRTC ? fileShare.torrentClient.peerId : null, + }); + }); + + return fileShare; +} + +export default socketConnect; \ No newline at end of file diff --git a/src/utils/visualizer.js b/src/utils/visualizer.js new file mode 100644 index 00000000..ea9bdd30 --- /dev/null +++ b/src/utils/visualizer.js @@ -0,0 +1,297 @@ +class Visualizer { + + constructor(width, height, canvas) { + + const dpr = window.devicePixelRatio || 1; + + this.canvas = canvas; + this.width = width; + this.height = height; + + /** + * Canvas resolution correction based on the device pixel-ratio. + * The canvas is first scaled to it's actual size based on the pixel ratio. + * Then the bounds of the canvas is reduced to display size using CSS. + * Then the contents of the canvas are upscaled by the device pixel-ratio. + * + * In the end, we get a sharper canvas with same size elements + */ + this.canvas.width = width * dpr; + this.canvas.height = height * dpr; + + this.canvas.style.width = width + 'px'; + this.canvas.style.height = height + 'px'; + + this.ctx = this.canvas.getContext('2d'); + this.ctx.scale(dpr, dpr); + + this.ctx.translate(width * 0.5, height * 0.5); + + this.nodes = []; + this.sentTo = []; + this.receivedBy = []; + this.state = { + start: 0, + end: 0, + }; + + this.draw(); + } + + /** + * Updates the positions of all the connected nodes in the graph + */ + updateAllPos() { + // Get only the connected nodes by removing the client node + const nodes = this.nodes; + + const divisions = 360/nodes.length; + + /** + * If only one 1 node is present in the network, + * then it must be placed at the centre of the canvas + */ + if (nodes.length == 1) { + nodes[0].cx = 0; + nodes[0].cy = 0; + + return; + } + + nodes.forEach((node, i) => { + // Calculate the angle that line makes + const angle = divisions*(i+1)*Math.PI/180; + const r = 100; + + node.cx = r * Math.cos(angle); + node.cy = r * Math.sin(angle); + }); + } + + /** + * Adds a node to the graph + * @param {String} name Name/Identifier of the node. Must be unique + * @param {Array} pos Array of two elements that have location values of the node + * @param {Boolean} isClient Dentoes whether the node is the current client + */ + addNode({ name, isClient, pos, peerId }) { + + const nodeData = { + name, + radius: 30, + cx: pos ? pos[0] : undefined, + cy: pos ? pos[1] : undefined, + textColor: isClient ? '#C5C7CC' : '#636979', + peerId: peerId, + }; + + const nodeDuplID = this.nodes.findIndex(node => node.name === name); + + if (nodeDuplID > -1) + this.nodes[nodeDuplID] = nodeData; + else + this.nodes.push(nodeData); + + if (!pos) this.updateAllPos(); + + } + + /** + * Removes a node from the graph + * @param {String} name Identifier of the node + */ + removeNode(name) { + const nodeDuplID = this.nodes.findIndex(node => node.name === name); + + if (nodeDuplID > -1) { + this.nodes.splice(nodeDuplID, 1); + + this.updateAllPos(); + } + + } + + + /** + * Adds the sender client + * @param {String[]} name Name of the client who is sending the files + * @param {Number} percentage Completed file transfer percentage + */ + startSharing(sentTo, receivedBy) { + + if (sentTo === undefined) { + this.sentTo = this.nodes.slice(1); + } + else { + this.sentTo = this.nodes.filter(node => sentTo.includes(node.name) || sentTo.includes(node.peerId)); + } + + if (receivedBy !== undefined) { + this.receivedBy = this.nodes.filter(node => receivedBy.includes(node.name) || receivedBy.includes(node.peerId)); + } + + } + + /** + * Removes the sender client and resets for next file transfer + */ + stopSharing() { + this.sentTo = []; + this.receivedBy = []; + } + + draw() { + /** + * Empty the canvas, and add the updated nodes, connections and labels + */ + this.ctx.clearRect(-this.width, -this.height, 2*this.width, 2*this.height); + + const a = (sender, receiver) => { + // Get the (x, y) coordinates of sender and receiver node + const x1 = sender.cx; + const y1 = sender.cy; + const x2 = receiver.cx; + const y2 = receiver.cy; + + // Calculate the total distance between the node + const dis = Math.sqrt(Math.pow(x1-x2, 2) + Math.pow(y1-y2, 2)) - sender.radius; + // Calculate the angle of line between the nodes along x axis. + // Slope is calculated first + const angle = Math.atan2(y2-y1, x2-x1); + + if (this.state.start > dis) { + this.state.start = 0; + } + + new CanvasElements.Line({ + x: x1 + this.state.start * Math.cos(angle), + y: y1 + this.state.start * Math.sin(angle), + r: 0.2 * dis, + angle, + borderWidth: 2, + borderColor: '#3BE8B0', + ctx: this.ctx, + }); + } + + /** + * Creates the file transfer indicator line + */ + if (this.sentTo.length || this.receivedBy.length) { + + this.sentTo.forEach(node => { + a(this.nodes[0], node); + }); + + this.receivedBy.forEach(node => { + a(node, this.nodes[0]); + }) + + this.state.start += 3; + } + else { + this.state.start = 0; + } + + + const primaryColor = ({ name, peerId }) => { + if (this.sentTo.length && (this.nodes[0].name === name || this.nodes[0].peerId === peerId)) { + return '#3BE8B0'; + } + + if (this.receivedBy.find(node => node.name === name || node.peerId === peerId)) { + return '#3BE8B0'; + } + + return '#636979'; + }; + + /** + * Adds the nodes + */ + this.nodes.forEach((node, i) => { + + /** + * Add waves to current client node + */ + if (i === 0) { + const radii = [50, 40]; + + radii.forEach(radius => + new CanvasElements.Circle({ + x: node.cx, + y: node.cy, + r: radius, + // If the current client is the sender, then show green waves, otherwise gray + // background: this.senders.name === node.name ? 'rgba(59, 232, 176, 0.1)' : 'rgba(99, 105, 121, 0.1)', + background: 'rgba(99, 105, 121, 0.1)', + ctx: this.ctx + }) + ); + } + + new CanvasElements.Circle({ + x: node.cx, + y: node.cy, + r: node.radius, + background: '#0D1322', + borderColor: primaryColor(node), + borderWidth: 2.5, + ctx: this.ctx + }); + }); + + /** + * Adds the avatar text + */ + this.nodes.forEach(node => { + new CanvasElements.Text({ + x: node.cx, + y: node.cy, + text: node.name[0].toUpperCase(), + font: '"Rubik", sans-serif', + align: 'center', + baseline: 'middle', + size: node.radius/1.2, + background: primaryColor(node), + ctx: this.ctx + }) + }); + + /** + * Adds the nickname labels + */ + this.nodes.forEach(node => + new CanvasElements.Text({ + x: node.cx, + y: node.cy + node.radius + 20, + text: node.name, + font: '"Rubik", sans-serif', + align: 'center', + baseline: 'middle', + size: 13, + background: node.textColor, + weight: '500', + ctx: this.ctx + }) + ); + + requestAnimationFrame(this.draw.bind(this)); + } + + /** + * Updates the file transfer percentage + * @param {Number} percentage Completed file transfer percentage + */ + setTransferPercentage(percentage) { + if (percentage > 100) percentage = 100; + } + + sending(isSending) { + + } + +} + + +export default Visualizer; \ No newline at end of file From 3519dc39e88bbe10030c43443ea0469fe2ab4459 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 16:58:40 +0530 Subject: [PATCH 007/127] Remove file zipping --- static/worker.js | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 static/worker.js diff --git a/static/worker.js b/static/worker.js deleted file mode 100644 index 3628f5bd..00000000 --- a/static/worker.js +++ /dev/null @@ -1,34 +0,0 @@ -importScripts('https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js'); - -/** - * Compresses files to zip format - * @param {FileList} files List of files to be compressed - */ -function zipFiles(files) { - if (!files || !files.length) return; - - const zip = new JSZip(); - - for (let i = 0; i < files.length; i++) { - const file = files[i]; - - zip.file(file.name, file); - } - - return zip.generateAsync({ - type: 'arraybuffer', - compression: 'DEFLATE', - compressionOptions: { - level: 5 - } - }); -} - -addEventListener('message', evt => { - - zipFiles(evt.data) - .then(zipfile => { - postMessage(zipfile); - }); - -}); \ No newline at end of file From 40932a403b029beb2ec67521f0d891939b5c0cfe Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 16:59:14 +0530 Subject: [PATCH 008/127] Migrate to Preact --- gulpfile.js | 162 - package-lock.json | 19491 +++++++++++----- package.json | 52 +- preact.config.js | 12 + public/App.svelte | 39 - public/app.html | 35 - public/app.js | 19 - public/components/Fab.svelte | 20 - public/components/FileDrop.svelte | 23 - public/components/Modal.svelte | 46 - public/components/Toast/Toast.svelte | 23 - public/components/Toast/index.js | 32 - public/index.html | 152 - public/scss/styles.scss | 9 - public/utils/socketConnect.js | 23 - public/utils/visualizer.js | 284 - public/views/FileTransfer.svelte | 469 - public/views/NewUser.svelte | 38 - public/views/Rooms.svelte | 111 - {static => src/assets}/fonts/icomoon.eot | Bin {static => src/assets}/fonts/icomoon.svg | 0 {static => src/assets}/fonts/icomoon.ttf | Bin {static => src/assets}/fonts/icomoon.woff | Bin .../images/apple-touch-icon-120x120.png | Bin .../images/apple-touch-icon-144x144.png | Bin .../images/apple-touch-icon-152x152.png | Bin .../assets}/images/favicon-16x16.png | Bin .../assets}/images/favicon-32x32.png | Bin {static => src/assets}/images/favicon.ico | Bin {static => src/assets}/images/icon-192.png | Bin {static => src/assets}/images/icon-512.png | Bin .../images/illustrations/network_compress.png | Bin .../illustrations/three_devices_compress.png | Bin .../illustrations/two_devices_compress.png | Bin .../images/illustrations/world_compressed.png | Bin .../assets}/images/mstile-144x144.png | Bin {static => src/assets}/images/noise.png | Bin src/components/Fab/index.js | 16 + src/components/FileDrop/index.js | 35 + src/components/Modal/index.js | 42 + src/index.js | 28 + {static => src}/manifest.json | 4 +- src/routes/App/FileTransfer/index.js | 347 + src/routes/App/NewUser/index.js | 40 + src/routes/App/Rooms/index.js | 116 + src/routes/App/app.scss | 9 + src/routes/App/index.js | 39 + src/routes/Home/index.js | 116 + {public/scss => src/routes/Home}/index.scss | 2 +- {public => src}/scss/app/_desktop.scss | 0 {public => src}/scss/app/_mobile.scss | 0 {public => src}/scss/base/_fonts.scss | 10 +- {public => src}/scss/base/_index.scss | 0 {public => src}/scss/base/_variables.scss | 2 +- src/template.html | 28 + {public => src}/utils/formatSize.js | 0 56 files changed, 15004 insertions(+), 6870 deletions(-) delete mode 100644 gulpfile.js create mode 100644 preact.config.js delete mode 100644 public/App.svelte delete mode 100644 public/app.html delete mode 100644 public/app.js delete mode 100644 public/components/Fab.svelte delete mode 100644 public/components/FileDrop.svelte delete mode 100644 public/components/Modal.svelte delete mode 100644 public/components/Toast/Toast.svelte delete mode 100644 public/components/Toast/index.js delete mode 100644 public/index.html delete mode 100644 public/scss/styles.scss delete mode 100644 public/utils/socketConnect.js delete mode 100644 public/utils/visualizer.js delete mode 100644 public/views/FileTransfer.svelte delete mode 100644 public/views/NewUser.svelte delete mode 100644 public/views/Rooms.svelte rename {static => src/assets}/fonts/icomoon.eot (100%) rename {static => src/assets}/fonts/icomoon.svg (100%) rename {static => src/assets}/fonts/icomoon.ttf (100%) rename {static => src/assets}/fonts/icomoon.woff (100%) rename {static => src/assets}/images/apple-touch-icon-120x120.png (100%) rename {static => src/assets}/images/apple-touch-icon-144x144.png (100%) rename {static => src/assets}/images/apple-touch-icon-152x152.png (100%) rename {static => src/assets}/images/favicon-16x16.png (100%) rename {static => src/assets}/images/favicon-32x32.png (100%) rename {static => src/assets}/images/favicon.ico (100%) rename {static => src/assets}/images/icon-192.png (100%) rename {static => src/assets}/images/icon-512.png (100%) rename {static => src/assets}/images/illustrations/network_compress.png (100%) rename {static => src/assets}/images/illustrations/three_devices_compress.png (100%) rename {static => src/assets}/images/illustrations/two_devices_compress.png (100%) rename {static => src/assets}/images/illustrations/world_compressed.png (100%) rename {static => src/assets}/images/mstile-144x144.png (100%) rename {static => src/assets}/images/noise.png (100%) create mode 100644 src/components/Fab/index.js create mode 100644 src/components/FileDrop/index.js create mode 100644 src/components/Modal/index.js create mode 100644 src/index.js rename {static => src}/manifest.json (78%) create mode 100644 src/routes/App/FileTransfer/index.js create mode 100644 src/routes/App/NewUser/index.js create mode 100644 src/routes/App/Rooms/index.js create mode 100644 src/routes/App/app.scss create mode 100644 src/routes/App/index.js create mode 100644 src/routes/Home/index.js rename {public/scss => src/routes/Home}/index.scss (92%) rename {public => src}/scss/app/_desktop.scss (100%) rename {public => src}/scss/app/_mobile.scss (100%) rename {public => src}/scss/base/_fonts.scss (72%) rename {public => src}/scss/base/_index.scss (100%) rename {public => src}/scss/base/_variables.scss (83%) create mode 100644 src/template.html rename {public => src}/utils/formatSize.js (100%) diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 27fde67f..00000000 --- a/gulpfile.js +++ /dev/null @@ -1,162 +0,0 @@ -const gulp = require('gulp'); -const sass = require('gulp-sass'); -const htmlmin = require('gulp-htmlmin'); -const babel = require('gulp-babel'); -const workboxBuild = require('workbox-build'); -const rollup = require('gulp-better-rollup'); -const svelte = require('rollup-plugin-svelte'); -const resolve = require('@rollup/plugin-node-resolve').default; -const commonjs = require('@rollup/plugin-commonjs'); -const autoprefixer = require('gulp-autoprefixer'); - -/** - * Builds the Stylesheets - */ -gulp.task('styles', function() { - return gulp.src('public/scss/**/*.scss') - .pipe(sass({ outputStyle: 'compressed', }).on('error', sass.logError)) - .pipe(autoprefixer({ cascade: false })) - .pipe(gulp.dest('dist/css')); -}); - -/** - * Copies the static files - */ -gulp.task('static', function(done) { - - function staticAssets(cb) { - - gulp.src([ - 'static/**/*', - '!static/**/*.js', - ], { - nodir: true - }) - .pipe(gulp.dest('dist')); - cb(); - } - - function staticJS(cb) { - - gulp.src('static/**/*.js') - .pipe(babel()) - .pipe(gulp.dest('dist')) - cb(); - } - - return gulp.parallel(staticAssets, staticJS)(done); -}); - -/** - * Create Service worker using Workbox - */ -gulp.task('sw', async function() { - - await workboxBuild.generateSW({ - swDest: './dist/sw.js', - globDirectory: './dist', - globPatterns: ['app.html', 'fonts/*'], - runtimeCaching: [ - { - urlPattern: /\.(?:js|css)$/, - handler: 'StaleWhileRevalidate', - }, - { - urlPattern: /^https:\/\/fonts\.googleapis\.com/, - handler: 'StaleWhileRevalidate', - options: { - cacheName: 'blaze-google-fonts-stylesheets' - } - }, - { - urlPattern: /^https:\/\/fonts\.gstatic\.com/, - handler: 'CacheFirst', - options: { - cacheName: 'blaze-google-fonts-webfonts', - cacheableResponse: { - statuses: [0, 200], - }, - expiration: { - maxAgeSeconds: 60 * 60 * 24 * 365 // An year - } - }, - }, - { - // Url pattern excludes images whose names starts with icon - urlPattern: /(?:noise.png)$/, - handler: 'CacheFirst', - options: { - cacheName: 'blaze-images', - expiration: { - maxEntries: 60, - maxAgeSeconds: 60 * 60 * 24 * 30, // 30 Days - } - } - } - ], - cacheId: 'blaze', - }); - - // Further processing - return gulp.src('./dist/sw.js', { base: './' }) - .pipe(babel()) - .pipe(gulp.dest('./')); -}); - -/** - * HTML minification - */ -gulp.task('html', function() { - return gulp.src('public/**/*.html') - .pipe(htmlmin({ - collapseWhitespace: true, - removeRedundantAttributes: true, - removeScriptTypeAttributes: true, - useShortDoctype: true, - removeComments: true - })) - .pipe(gulp.dest('dist')); -}); - -/** - * Compiling and bundling the Svelte app - */ -gulp.task('svelte', function() { - - return gulp.src('public/app.js') - .pipe(rollup({ - plugins: [ - svelte({ - dev: false, - /** - * Bundling the scoped css of components - * Scoped css is not bundled as of now - */ - // css: css => { - // css.write('dist/bundle.css'); - // } - }), - - resolve({ - browser: true, - dedupe: importee => importee === 'svelte' || importee.startsWith('svelte/') - }), - commonjs(), - ], - }, 'iife')) - .pipe(babel()) - .pipe(gulp.dest('dist/js')); - -}); - -/** - * Building for production - */ -gulp.task('default', gulp.series(gulp.parallel('static', 'styles', 'html', 'svelte'), 'sw')); - -/** - * File Watcher during development - */ -gulp.task('dev', gulp.series('default', function watcher() { - return gulp.watch(['public/**/*', 'static/**/*'], gulp.parallel('default')); -})); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6c47f245..933a31d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,4946 +5,6046 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.1" } }, - "@babel/core": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", - "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", + "@babel/compat-data": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.1.tgz", + "integrity": "sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helpers": "^7.2.0", - "@babel/parser": "^7.2.2", - "@babel/template": "^7.2.2", - "@babel/traverse": "^7.2.2", - "@babel/types": "^7.2.2", - "convert-source-map": "^1.1.0", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.2.tgz", + "integrity": "sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.2", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helpers": "^7.10.1", + "@babel/parser": "^7.10.2", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.2", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.10", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } } }, "@babel/generator": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.2.tgz", - "integrity": "sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", "dev": true, "requires": { - "@babel/types": "^7.2.2", + "@babel/types": "^7.10.2", "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - } + "lodash": "^4.17.13", + "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "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==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", + "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.1" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", + "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-explode-assignable-expression": "^7.10.1", + "@babel/types": "^7.10.1" } }, - "@babel/helper-call-delegate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", - "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", + "@babel/helper-builder-react-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.1.tgz", + "integrity": "sha512-KXzzpyWhXgzjXIlJU1ZjIXzUPdej1suE6vzqgImZ/cpAsR/CC8gUcX4EWRmDfWz/cs6HOCPMBIJ3nKoXt3BFuw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", + "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-module-imports": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", + "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.1", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", + "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", + "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-regex": "^7.10.1", + "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", - "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", + "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.0.0", - "lodash": "^4.17.10" + "@babel/helper-function-name": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", + "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-get-function-arity": { - "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==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.1" } }, "@babel/helper-hoist-variables": { - "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==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", + "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.1" } }, "@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==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", + "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.1" } }, "@babel/helper-module-imports": { - "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==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", + "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.1" } }, "@babel/helper-module-transforms": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", - "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", + "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/types": "^7.2.2", - "lodash": "^4.17.10" + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" } }, "@babel/helper-optimise-call-expression": { - "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==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", + "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.1" } }, "@babel/helper-plugin-utils": { - "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==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", "dev": true }, "@babel/helper-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", - "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", + "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", + "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-wrap-function": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-replace-supers": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz", - "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", + "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.2.3", - "@babel/types": "^7.0.0" + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", + "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-split-export-declaration": { - "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==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.1" } }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", + "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helpers": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2.0.tgz", - "integrity": "sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", + "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", "dev": true, "requires": { - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.5", - "@babel/types": "^7.2.0" + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.1", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" - }, - "dependencies": { - "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 - } } }, "@babel/parser": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.3.tgz", - "integrity": "sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", + "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", + "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.1.tgz", + "integrity": "sha512-xBfteh352MTke2U1NpclzMDmAmCdQ2fBZjhZQQfGTjXw6qcRYMkt528sA1U8o0ThDCSeuETXIj5bOGdxN+5gkw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-decorators": "^7.10.1" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", + "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", + "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", + "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", + "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.1" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", + "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", + "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz", + "integrity": "sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", + "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz", - "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", + "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.2.0" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", + "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz", + "integrity": "sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", + "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", + "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", + "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.1.tgz", + "integrity": "sha512-X/d8glkrAtra7CaQGMiGs/OGa6XgUzqPcBXCIGFCpCqnfGlT0Wfbzo/B89xHhnInTaItPK8LALblVXcUOEh95Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", + "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz", - "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", + "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", + "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz", - "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", + "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.10" + "@babel/helper-plugin-utils": "^7.10.1", + "lodash": "^4.17.13" } }, "@babel/plugin-transform-classes": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", - "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.1.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", + "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-define-map": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", + "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-destructuring": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz", - "integrity": "sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", + "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", - "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", + "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", - "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", + "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", + "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-for-of": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz", - "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", + "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-function-name": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", - "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", + "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", + "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", + "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", - "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", + "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz", - "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", + "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz", - "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", + "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-hoist-variables": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", + "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.3" } }, "@babel/plugin-transform-new-target": { - "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==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", + "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-object-assign": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.10.1.tgz", + "integrity": "sha512-poBEVwzcTjv6p92ZcnWBUftzyXFCy/Zg/eCQsayu5/ot2+qwnasNvCCKPwdgprgDRzbHVUhh/fzI9rCoFOHLbg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", + "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz", - "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", + "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", + "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.1.tgz", + "integrity": "sha512-MBVworWiSRBap3Vs39eHt+6pJuLUAaK4oxGc8g+wY+vuSJvLiEQjW1LSTqKb8OUPtDvHCkdPhk7d6sjC19xyFw==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.1.0", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-react-jsx": "^7.10.1", + "@babel/helper-builder-react-jsx-experimental": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" } }, "@babel/plugin-transform-regenerator": { - "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==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", + "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", + "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", "dev": true, "requires": { - "regenerator-transform": "^0.13.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", + "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", + "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", + "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-regex": "^7.10.1" } }, "@babel/plugin-transform-template-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", - "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", + "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", + "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.1.tgz", + "integrity": "sha512-v+QWKlmCnsaimLeqq9vyCsVRMViZG1k2SZTlcZvB+TqyH570Zsij8nvVUZzOASCRiQFUxkLrn9Wg/kH0zgy5OQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-typescript": "^7.10.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", + "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", - "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", + "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/preset-env": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.2.3.tgz", - "integrity": "sha512-AuHzW7a9rbv5WXmvGaPX7wADxFkZIqKlbBh1dmZUQp4iwiPpkE/Qnrji6SC4UQCQzvWY/cpHET29eUhXS9cLPw==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", + "integrity": "sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.1", + "@babel/helper-compilation-targets": "^7.10.2", + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-proposal-async-generator-functions": "^7.10.1", + "@babel/plugin-proposal-class-properties": "^7.10.1", + "@babel/plugin-proposal-dynamic-import": "^7.10.1", + "@babel/plugin-proposal-json-strings": "^7.10.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", + "@babel/plugin-proposal-numeric-separator": "^7.10.1", + "@babel/plugin-proposal-object-rest-spread": "^7.10.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", + "@babel/plugin-proposal-optional-chaining": "^7.10.1", + "@babel/plugin-proposal-private-methods": "^7.10.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.1", + "@babel/plugin-transform-arrow-functions": "^7.10.1", + "@babel/plugin-transform-async-to-generator": "^7.10.1", + "@babel/plugin-transform-block-scoped-functions": "^7.10.1", + "@babel/plugin-transform-block-scoping": "^7.10.1", + "@babel/plugin-transform-classes": "^7.10.1", + "@babel/plugin-transform-computed-properties": "^7.10.1", + "@babel/plugin-transform-destructuring": "^7.10.1", + "@babel/plugin-transform-dotall-regex": "^7.10.1", + "@babel/plugin-transform-duplicate-keys": "^7.10.1", + "@babel/plugin-transform-exponentiation-operator": "^7.10.1", + "@babel/plugin-transform-for-of": "^7.10.1", + "@babel/plugin-transform-function-name": "^7.10.1", + "@babel/plugin-transform-literals": "^7.10.1", + "@babel/plugin-transform-member-expression-literals": "^7.10.1", + "@babel/plugin-transform-modules-amd": "^7.10.1", + "@babel/plugin-transform-modules-commonjs": "^7.10.1", + "@babel/plugin-transform-modules-systemjs": "^7.10.1", + "@babel/plugin-transform-modules-umd": "^7.10.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.10.1", + "@babel/plugin-transform-object-super": "^7.10.1", + "@babel/plugin-transform-parameters": "^7.10.1", + "@babel/plugin-transform-property-literals": "^7.10.1", + "@babel/plugin-transform-regenerator": "^7.10.1", + "@babel/plugin-transform-reserved-words": "^7.10.1", + "@babel/plugin-transform-shorthand-properties": "^7.10.1", + "@babel/plugin-transform-spread": "^7.10.1", + "@babel/plugin-transform-sticky-regex": "^7.10.1", + "@babel/plugin-transform-template-literals": "^7.10.1", + "@babel/plugin-transform-typeof-symbol": "^7.10.1", + "@babel/plugin-transform-unicode-escapes": "^7.10.1", + "@babel/plugin-transform-unicode-regex": "^7.10.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.10.2", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.2.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.2.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.2.0", - "@babel/plugin-transform-classes": "^7.2.0", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.2.0", - "@babel/plugin-transform-dotall-regex": "^7.2.0", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.2.0", - "@babel/plugin-transform-function-name": "^7.2.0", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "@babel/plugin-transform-modules-systemjs": "^7.2.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-new-target": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.2.0", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.2.0", - "browserslist": "^4.3.4", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.3.0" + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-typescript": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.1.tgz", + "integrity": "sha512-m6GV3y1ShiqxnyQj10600ZVOFrSSAa8HQ3qIUk2r+gcGtHTIRw0dJnFLt1WNXpKjtVw7yw1DAPU/6ma2ZvgJuA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-transform-typescript": "^7.10.1" } }, "@babel/runtime": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", - "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.2.tgz", + "integrity": "sha512-+a2M/u7r15o3dV1NEizr9bRi+KUVnrs/qYxF0Z06DAPx/4VCWaz1WA7EcbE+uqGgt39lp5akWGmHsTseIkHkHg==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.2" + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", - "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/traverse": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", - "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.10" + "lodash": "^4.17.13" }, "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true } } }, "@babel/types": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.2.tgz", - "integrity": "sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" } }, "@hapi/address": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.0.0.tgz", - "integrity": "sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", "dev": true }, "@hapi/hoek": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-6.2.4.tgz", - "integrity": "sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", "dev": true }, "@hapi/joi": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.0.tgz", - "integrity": "sha512-n6kaRQO8S+kepUTbXL9O/UOL788Odqs38/VOfoCrATDtTvyfiO3fgjlSRaNkHabpTLgM7qru9ifqXlXbXk8SeQ==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", "dev": true, "requires": { "@hapi/address": "2.x.x", - "@hapi/hoek": "6.x.x", - "@hapi/marker": "1.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", "@hapi/topo": "3.x.x" } }, - "@hapi/marker": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@hapi/marker/-/marker-1.0.0.tgz", - "integrity": "sha512-JOfdekTXnJexfE8PyhZFyHvHjt81rBFSAbTIRAhF2vv/2Y1JzoKsGqxH/GpZJoF7aEfYok8JVcAHmSz1gkBieA==", - "dev": true - }, "@hapi/topo": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.2.tgz", - "integrity": "sha512-r+aumOqJ5QbD6aLPJWqVjMAPsx5pZKz+F5yPqXZ/WWG9JTtHbQqlzrJoknJ0iJxLj9vlXtmpSdjlkszseeG8OA==", - "dev": true, - "requires": { - "@hapi/hoek": "8.x.x" + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" }, "dependencies": { - "@hapi/hoek": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.1.0.tgz", - "integrity": "sha512-b1J4jxYnW+n6lC91V6Pqg9imP9BZq0HNCeM+3sbXg05rQsE9cGYrKFpZjyztVesGmNRE6R+QaEoWGATeIiUVjA==", + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true } } }, - "@rollup/plugin-commonjs": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-12.0.0.tgz", - "integrity": "sha512-8+mDQt1QUmN+4Y9D3yCG8AJNewuTSLYPJVzKKUZ+lGeQrI+bV12Tc5HCyt2WdlnG6ihIL/DPbKRJlB40DX40mw==", + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.8", - "commondir": "^1.0.1", - "estree-walker": "^1.0.1", + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", "glob": "^7.1.2", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0" + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" }, "dependencies": { - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "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 - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } } } }, - "@rollup/plugin-node-resolve": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.0.0.tgz", - "integrity": "sha512-5poJCChrkVggXXND/sQ7yNqwjUNT4fP31gpRWCnSNnlXuUXTCMHT33xZrTGxgjm5Rl18MHj7iEzlCT8rYWwQSA==", + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "deep-freeze": "^0.0.1", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.14.2" + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" }, "dependencies": { - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "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 - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } } } }, - "@rollup/pluginutils": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.10.tgz", - "integrity": "sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw==", + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", "dev": true, "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" }, "dependencies": { - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "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 } } }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } }, - "@types/node": { - "version": "12.6.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.9.tgz", - "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==", + "@polka/url": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", + "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "@preact/async-loader": { + "version": "3.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@preact/async-loader/-/async-loader-3.0.0-rc.9.tgz", + "integrity": "sha512-PjCi/xKyOv1gx/Q0iUX5p0CANMFv9gkimKzg104FNUKmksh5TgKFi1PkQ2Xn+OLgra8N00auAxOt3BMMvcrGgA==", "dev": true, "requires": { - "@types/node": "*" + "kleur": "^3.0.3", + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } } }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "@prefresh/core": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-0.6.0.tgz", + "integrity": "sha512-xhhBgQeMmyoSYEr8F27oypxRTWysIKPnc+Ed6U5OmEwPtLeKsccI3UCpSQyrcv5/HmPNPjAYHPqNC0uH57rIkw==", "dev": true }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "@prefresh/utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-0.1.2.tgz", + "integrity": "sha512-uIXXKHoNPKCyJRvJId06VBSaNJKn1ifVACatJkcfJw4i9e3A89q7aOM91CUAyvgbY8QzPyiqG1EeIbsjgcFgKA==", + "dev": true + }, + "@prefresh/webpack": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@prefresh/webpack/-/webpack-0.7.1.tgz", + "integrity": "sha512-3EFUh8mPAv0xO9C1mDWkyoUtNTIIN2J1f/D1DabLvKlj/wwwVMWprdfexWrhNSFs+hJHRx/dqJzTitPvoa63Yg==", + "dev": true, "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" + "@prefresh/core": "0.6.0", + "@prefresh/utils": "0.1.2" } }, - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true + "@rollup/plugin-node-resolve": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", + "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + } }, - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "@rollup/plugin-replace": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz", + "integrity": "sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@rollup/pluginutils": "^3.0.8", + "magic-string": "^0.25.5" } }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", "dev": true }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "@surma/rollup-plugin-off-main-thread": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.1.tgz", + "integrity": "sha512-ZPBWYQDdO4JZiTmTP3DABsHhIPA7bEJk9Znk7tZsrbPGanoGo8YxMv//WLx5Cvb+lRgS42+6yiOIYYHCKDmkpQ==", "dev": true, "requires": { - "ansi-wrap": "^0.1.0" + "ejs": "^2.6.1", + "magic-string": "^0.25.0" } }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", "dev": true, "requires": { - "ansi-wrap": "0.1.0" + "defer-to-connect": "^1.0.1" } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "@types/babel__core": { + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.8.tgz", + "integrity": "sha512-KXBiQG2OXvaPWFPDS1rD8yV9vO0OuWIqAEqLsbfX0oU2REN5KuoMnZ1gClWcBhO5I3n6oTVAmrMufOvRqdmFTQ==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true + "@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "@types/babel__traverse": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.12.tgz", + "integrity": "sha512-t4CoEokHTfcyfb4hUaF9oOHu9RmmNWnm1CP0YmMqOOfClKascOmvlEM736vlqeScuGvBDsHkf8R2INd4DWreQA==", "dev": true, "requires": { - "buffer-equal": "^1.0.0" + "@babel/types": "^7.3.0" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "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==", + "@types/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", "dev": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "@types/minimatch": "*", + "@types/node": "*" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", "dev": true }, - "arr-filter": { + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", "dev": true, "requires": { - "make-iterator": "^1.0.0" + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" } }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", "dev": true }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "14.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz", + "integrity": "sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", "dev": true, "requires": { - "make-iterator": "^1.0.0" + "@types/node": "*" } }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-each": { + "@types/stack-utils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", "dev": true }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true + "@types/yargs": { + "version": "13.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.9.tgz", + "integrity": "sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } }, - "array-flatten": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "dev": true }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", "dev": true, "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" }, "dependencies": { - "is-number": { - "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 + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } } } }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", "dev": true, "requires": { - "is-number": "^4.0.0" + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" }, "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, - "asn1": { - "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", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "@webassemblyjs/wast-printer": "1.9.0" } }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "requires": { - "async-done": "^1.2.2" + "@webassemblyjs/ast": "1.9.0" } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, - "autoprefixer": { - "version": "9.7.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", - "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "browserslist": "^4.8.3", - "caniuse-lite": "^1.0.30001020", - "chalk": "^2.4.2", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.26", - "postcss-value-parser": "^4.0.2" - }, - "dependencies": { - "browserslist": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz", - "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001030", - "electron-to-chromium": "^1.3.363", - "node-releases": "^1.1.50" - } - }, - "caniuse-lite": { - "version": "1.0.30001035", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz", - "integrity": "sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "electron-to-chromium": { - "version": "1.3.376", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.376.tgz", - "integrity": "sha512-cv/PYVz5szeMz192ngilmezyPNFkUjuynuL2vNdiqIrio440nfTDdc0JJU0TS2KHLSVCs9gBbt4CFqM+HcBnjw==", - "dev": true - }, - "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", - "dev": true - }, - "babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "dev": true - }, - "babel-extract-comments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", - "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { - "babylon": "^6.18.0" + "@xtuc/ieee754": "^1.2.0" } }, - "babel-helper-evaluate-path": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", - "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", - "dev": true - }, - "babel-helper-flip-expressions": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", - "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", - "dev": true - }, - "babel-helper-is-nodes-equiv": { - "version": "0.0.1", - "resolved": "http://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", - "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", - "dev": true - }, - "babel-helper-is-void-0": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", - "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", - "dev": true - }, - "babel-helper-mark-eval-scopes": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", - "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", - "dev": true - }, - "babel-helper-remove-or-void": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", - "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", - "dev": true - }, - "babel-helper-to-multiple-sequence-expressions": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", - "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", - "dev": true + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } }, - "babel-plugin-minify-builtins": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", - "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, - "babel-plugin-minify-constant-folding": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", - "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "babel-helper-evaluate-path": "^0.5.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "babel-plugin-minify-dead-code-elimination": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.0.tgz", - "integrity": "sha512-XQteBGXlgEoAKc/BhO6oafUdT4LBa7ARi55mxoyhLHNuA+RlzRmeMAfc31pb/UqU01wBzRc36YqHQzopnkd/6Q==", + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-mark-eval-scopes": "^0.4.3", - "babel-helper-remove-or-void": "^0.4.3", - "lodash.some": "^4.6.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "babel-plugin-minify-flip-comparisons": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", - "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "babel-helper-is-void-0": "^0.4.3" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "babel-plugin-minify-guarded-expressions": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.3.tgz", - "integrity": "sha1-zHCbRFP9IbHzAod0RMifiEJ845c=", + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "babel-helper-flip-expressions": "^0.4.3" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "babel-plugin-minify-infinity": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", - "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", - "dev": true + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } }, - "babel-plugin-minify-mangle-names": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", - "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "babel-helper-mark-eval-scopes": "^0.4.3" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "babel-plugin-minify-numeric-literals": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", - "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "babel-plugin-minify-replace": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", - "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", "dev": true }, - "babel-plugin-minify-simplify": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.0.tgz", - "integrity": "sha512-TM01J/YcKZ8XIQd1Z3nF2AdWHoDsarjtZ5fWPDksYZNsoOjQ2UO2EWm824Ym6sp127m44gPlLFiO5KFxU8pA5Q==", - "dev": true, - "requires": { - "babel-helper-flip-expressions": "^0.4.3", - "babel-helper-is-nodes-equiv": "^0.0.1", - "babel-helper-to-multiple-sequence-expressions": "^0.5.0" - } + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, - "babel-plugin-minify-type-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", - "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", - "dev": true, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { - "babel-helper-is-void-0": "^0.4.3" + "mime-types": "~2.1.24", + "negotiator": "0.6.2" } }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", "dev": true }, - "babel-plugin-transform-inline-consecutive-adds": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", - "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", + "acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=", "dev": true }, - "babel-plugin-transform-member-expression-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", - "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", - "dev": true + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + } + } }, - "babel-plugin-transform-merge-sibling-variables": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", - "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, - "babel-plugin-transform-minify-booleans": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", - "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", "dev": true }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" } }, - "babel-plugin-transform-property-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", - "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "dev": true, "requires": { - "esutils": "^2.0.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "babel-plugin-transform-regexp-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", - "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", "dev": true }, - "babel-plugin-transform-remove-console": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", - "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, - "babel-plugin-transform-remove-debugger": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", - "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, - "babel-plugin-transform-remove-undefined": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", - "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", "dev": true, "requires": { - "babel-helper-evaluate-path": "^0.5.0" + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } } }, - "babel-plugin-transform-simplify-comparison-operators": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", - "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", - "dev": true - }, - "babel-plugin-transform-undefined-to-void": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", - "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", "dev": true }, - "babel-preset-minify": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.0.tgz", - "integrity": "sha512-xj1s9Mon+RFubH569vrGCayA9Fm2GMsCgDRm1Jb8SgctOB7KFcrVc2o8K3YHUyMz+SWP8aea75BoS8YfsXXuiA==", - "dev": true, - "requires": { - "babel-plugin-minify-builtins": "^0.5.0", - "babel-plugin-minify-constant-folding": "^0.5.0", - "babel-plugin-minify-dead-code-elimination": "^0.5.0", - "babel-plugin-minify-flip-comparisons": "^0.4.3", - "babel-plugin-minify-guarded-expressions": "^0.4.3", - "babel-plugin-minify-infinity": "^0.4.3", - "babel-plugin-minify-mangle-names": "^0.5.0", - "babel-plugin-minify-numeric-literals": "^0.4.3", - "babel-plugin-minify-replace": "^0.5.0", - "babel-plugin-minify-simplify": "^0.5.0", - "babel-plugin-minify-type-constructors": "^0.4.3", - "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", - "babel-plugin-transform-member-expression-literals": "^6.9.4", - "babel-plugin-transform-merge-sibling-variables": "^6.9.4", - "babel-plugin-transform-minify-booleans": "^6.9.4", - "babel-plugin-transform-property-literals": "^6.9.4", - "babel-plugin-transform-regexp-constructors": "^0.4.3", - "babel-plugin-transform-remove-console": "^6.9.4", - "babel-plugin-transform-remove-debugger": "^6.9.4", - "babel-plugin-transform-remove-undefined": "^0.5.0", - "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", - "babel-plugin-transform-undefined-to-void": "^6.9.4", - "lodash.isplainobject": "^4.0.6" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", "dev": true, "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "type-fest": "^0.11.0" }, "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", "dev": true } } }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", "dev": true }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" + "color-convert": "^1.9.0" } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "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" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "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" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "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" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "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 }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "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": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "safe-buffer": "~5.1.0" } } } }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "tweetnacl": "^0.14.3" + "sprintf-js": "~1.0.2" } }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, - "binaryextensions": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.2.tgz", - "integrity": "sha512-xVNN69YGDghOqCCtA6FI7avYrr02mTJjOgB0/f1VPD3pJC8QEvjTKWc4epDx8AqxxA75NI0QpVM2gPJXUbE4Tg==", + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true }, - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" - } + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", "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", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" } }, - "browserslist": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.6.tgz", - "integrity": "sha512-kMGKs4BTzRWviZ8yru18xBpx+CyHG9eqgRbj9XbE3IMgtczf4aiA0Y1YCpVdvUieKGZ03kolSPXqTcscBCb9qw==", + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000921", - "electron-to-chromium": "^1.3.92", - "node-releases": "^1.1.1" + "array-uniq": "^1.0.1" } }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "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==", + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", "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" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "array.prototype.flatmap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz", + "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==", "dev": true, "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "asn1": { + "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" + } }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" }, "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } }, - "caniuse-lite": { - "version": "1.0.30000923", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000923.tgz", - "integrity": "sha512-j5ur7eeluOFjjPUkydtXP4KFAsmH3XaQNch5tvWSO+dLHYt5PE+VgJZLWtbVOodfWij6m6zas28T4gB/cLYq1w==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "object-assign": "^4.1.1", + "util": "0.10.3" }, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { - "has-flag": "^3.0.0" + "inherits": "2.0.1" } } } }, - "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - } + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-metadata-inferer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.2.0.tgz", + "integrity": "sha512-6yPph2NeCHNxoI/ZmjklYaLOSZDAx+0L0+wsXnF56FxmjxvUlYZSWcj1KXtXO8IufruQTzVFOjg1+IzdDazSPg==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" } }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", + "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001061", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.30", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "dev": true + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10" + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-esm-plugin": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/babel-esm-plugin/-/babel-esm-plugin-0.8.1.tgz", + "integrity": "sha512-Cg0A0wIW58cQQWK043UDgd1tyuMaCarh7krrgRvb+XsQMa2o6nPJzbgeqr4XWBw/240C1+vPE9oAxsftBEXp7A==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "deepcopy": "1.0.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } } } }, - "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", "dev": true, "requires": { - "source-map": "~0.6.0" + "babylon": "^6.18.0" + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true } } }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "p-try": "^2.0.0" } }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "p-limit": "^2.0.0" } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true } } }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } }, - "cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", "dev": true, "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" } }, - "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=", + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", "dev": true }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "color-name": "1.1.3" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "delayed-stream": "~1.0.0" - } - }, - "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concurrently": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.2.0.tgz", - "integrity": "sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", - "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", - "tree-kill": "^1.2.2", - "yargs": "^13.3.0" + "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": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "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=", + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", "dev": true }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true }, - "convert-source-map": { - "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==", + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "tweetnacl": "^0.14.3" } }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", "dev": true, "requires": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" } }, - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } + "optional": true }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, + "optional": true, "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "file-uri-to-path": "1.0.0" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { - "assert-plus": "^1.0.0" - } - }, - "date-fns": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.14.0.tgz", - "integrity": "sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" + "inherits": "~2.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "deep-freeze": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", - "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", "dev": true }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", "dev": true, "requires": { - "kind-of": "^5.0.2" + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true } } }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "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 + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true }, - "detect-file": { + "browser-process-hrtime": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, - "downloadjs": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/downloadjs/-/downloadjs-1.4.7.tgz", - "integrity": "sha1-9p+W+UDg0FU9rCkROYZaPNAQHjw=" - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } } }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "editions": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", - "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", - "dev": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.96.tgz", - "integrity": "sha512-ZUXBUyGLeoJxp4Nt6G/GjBRLnyz8IKQGexZ2ndWaoegThgMGFO1tdDYID5gBV32/1S83osjJHyfzvanE/8HY4Q==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "encodeurl": { + "browserify-des": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } }, - "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==", + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "once": "^1.4.0" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" }, "dependencies": { - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true } } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" } }, - "es5-ext": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", - "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "pako": "~1.0.5" } }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" } }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "node-int64": "^0.4.0" } }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "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 }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "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" + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "glob": "^7.1.3" } } } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "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" } }, - "extend": { - "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": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" }, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "pump": "^3.0.0" } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true } } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "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" + "callsites": "^2.0.0" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "dev": true, "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "no-case": "^2.2.0", + "upper-case": "^1.1.1" } }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, - "fast-json-stable-stringify": { + "camelcase-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true } } }, - "finalhandler": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "findup-sync": { + "caniuse-api": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "caniuse-db": { + "version": "1.0.30001083", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001083.tgz", + "integrity": "sha512-UORZDifiPy1KAGZ8mvTnN+0DcIxfgSALNqPZr52cIOBNjNHn5o88n3eelwpO8+ECM2LsHDorrgZBfrdPVgOhJg==", "dev": true }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "caniuse-lite": { + "version": "1.0.30001083", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001083.tgz", + "integrity": "sha512-CnYJ27awX4h7yj5glfK7r1TOI13LBytpLzEgfj0s4mY75/F8pnQcYjL+oVpmS38FB59+vU0gscQ9D8tc+lIXvA==", "dev": true }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "for-in": "^1.0.1" + "rsvp": "^4.8.4" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "map-cache": "^0.2.2" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "cheerio": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", + "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.1", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", "dev": true, "optional": true, "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "optional": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "fill-range": "^7.0.1" } }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "optional": true + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } }, - "concat-map": { - "version": "0.0.1", - "bundled": true, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "optional": true }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "optional": true }, - "debug": { - "version": "4.1.1", - "bundled": true, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "optional": true, "requires": { - "ms": "^2.1.1" + "is-number": "^7.0.0" } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-env": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.16.0.tgz", + "integrity": "sha512-ucF9caQEX5wQlY449KZBIJPx91+kRg9tJ3tWSc4+KzrvC5KNiPm/3g1noP8VhdI3046+Vw3jLmKAD0fjCRJTmw==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "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", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, - "optional": true + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "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 + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.3.0.tgz", + "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w==", + "dev": true + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, - "optional": true + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "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 + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "optional": true, "requires": { - "minipass": "^2.2.1" + "ms": "2.0.0" } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, - "gauge": { - "version": "2.7.4", - "bundled": true, + "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 + } + } + }, + "compression-webpack-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-3.1.0.tgz", + "integrity": "sha512-iqTHj3rADN4yHwXMBrQa/xrncex/uEQy8QHlaTKxGchT/hC0SdlJlmL/5eRqffmWq2ep0/Romw6Ld39JjTR/ug==", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.0.0", + "neo-async": "^2.5.0", + "schema-utils": "^2.6.1", + "serialize-javascript": "^2.1.2", + "webpack-sources": "^1.0.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, - "optional": 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" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } }, - "glob": { - "version": "7.1.3", - "bundled": true, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "optional": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "p-locate": "^4.1.0" } }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "optional": true, "requires": { - "minimatch": "^3.0.4" + "semver": "^6.0.0" } }, - "inflight": { - "version": "1.0.6", - "bundled": true, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "p-try": "^2.0.0" } }, - "inherits": { - "version": "2.0.3", - "bundled": true, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "optional": true + "requires": { + "p-limit": "^2.2.0" + } }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "find-up": "^4.0.0" } }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "optional": true, "requires": { - "brace-expansion": "^1.1.7" + "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" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true + "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 }, - "minipass": { - "version": "2.3.5", - "bundled": true, + "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, - "optional": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "safe-buffer": "~5.1.0" } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, + } + } + }, + "concurrently": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.2.0.tgz", + "integrity": "sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "date-fns": "^2.0.1", + "lodash": "^4.17.15", + "read-pkg": "^4.0.1", + "rxjs": "^6.5.2", + "spawn-command": "^0.0.2-1", + "supports-color": "^6.1.0", + "tree-kill": "^1.2.2", + "yargs": "^13.3.0" + }, + "dependencies": { + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", "dev": true, - "optional": true, "requires": { - "minipass": "^2.2.1" + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" } }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, - "optional": true, "requires": { - "minimist": "0.0.8" + "has-flag": "^3.0.0" } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, + } + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "optional": true, "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "semver": "^6.0.0" } }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, - "nopt": { - "version": "4.0.1", - "bundled": true, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, - "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-clear": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", + "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==", + "dev": true + }, + "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 + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.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==" + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "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 + } + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, - "optional": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" } }, - "npmlog": { - "version": "4.1.2", - "bundled": true, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, - "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, - "number-is-nan": { + "json5": { "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "optional": true + "requires": { + "minimist": "^1.2.0" + } }, - "once": { + "loader-utils": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, - "optional": true, "requires": { - "wrappy": "1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, - "osenv": { - "version": "0.1.5", - "bundled": true, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "p-try": "^2.0.0" } }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, - "optional": true + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } }, - "rc": { - "version": "1.2.8", - "bundled": true, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, - "optional": 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", - "bundled": true, - "dev": true, - "optional": true - } + "figgy-pudding": "^3.5.1" } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": 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" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, + } + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", "dev": true, - "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" } }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "critters-webpack-plugin": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/critters-webpack-plugin/-/critters-webpack-plugin-2.5.0.tgz", + "integrity": "sha512-O41TSPV2orAfrV6kSVC0SivZCtVkeypCNKb7xtrbqE/CfjrHeRaFaGuxglcjOI2IGf+oNg6E+ZoOktdlhXPTIQ==", + "dev": true, + "requires": { + "css": "^2.2.1", + "cssnano": "^4.1.7", + "jsdom": "^12.0.0", + "minimatch": "^3.0.4", + "parse5": "^4.0.0", + "postcss": "^7.0.5", + "pretty-bytes": "^4.0.2", + "webpack-log": "^2.0.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, + "jsdom": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-12.2.0.tgz", + "integrity": "sha512-QPOggIJ8fquWPLaYYMoh+zqUmdphDtu1ju0QGTitZT1Yd8I5qenPpXM1etzUegu3MjVp8XPzgZxdn8Yj7e40ig==", "dev": true, - "optional": true, "requires": { - "ansi-regex": "^2.0.0" + "abab": "^2.0.0", + "acorn": "^6.0.2", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.0.1", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.0.9", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.3", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.4.3", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + } } }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true }, - "tar": { - "version": "4.4.8", - "bundled": true, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, - "optional": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", "dev": true, - "optional": true, "requires": { - "string-width": "^1.0.2 || 2" + "async-limiter": "~1.0.0" } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true } } }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "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": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "cross-spawn-promise": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/cross-spawn-promise/-/cross-spawn-promise-0.10.2.tgz", + "integrity": "sha512-74PXJf6DYaab2klRS+D+9qxKJL1Weo3/ao9OPoH6NFzxtINSa/HE2mcyAPu1fpEmRTPD4Gdmpg3xEXQSgI8lpg==", "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" + "cross-spawn": "^5.1.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "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=", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "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" - } + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true } } }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "globule": "^1.0.0" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", - "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==", + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.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 + } + } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "postcss": "^7.0.1", + "timsort": "^0.3.0" } }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - } - }, - "glob-watcher": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", - "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "object.defaults": "^1.1.0" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" } }, - "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", "dev": true }, - "globule": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", - "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", "dev": true, "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.12", - "minimatch": "~3.0.2" + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "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 + } } }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", "dev": true, "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "gulp-cli": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", - "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.1.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.0.1", - "yargs": "^7.1.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "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=", + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "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" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.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=", + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" } }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - } } } }, - "gulp-autoprefixer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-7.0.1.tgz", - "integrity": "sha512-QJGEmHw+bEt7FSqvmbAUTxbCuNLJYx4sz3ox9WouYqT/7j5FH5CQ8ZnpL1M7H5npX1bUJa7lUVY1w20jXxhOxg==", + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", "dev": true, "requires": { - "autoprefixer": "^9.6.1", - "fancy-log": "^1.3.2", - "plugin-error": "^1.0.1", - "postcss": "^7.0.17", - "through2": "^3.0.1", - "vinyl-sourcemaps-apply": "^0.2.1" + "css-tree": "1.0.0-alpha.39" }, "dependencies": { - "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", "dev": true, "requires": { - "readable-stream": "2 || 3" + "mdn-data": "2.0.6", + "source-map": "^0.6.1" } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + }, + "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 } } }, - "gulp-babel": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gulp-babel/-/gulp-babel-8.0.0.tgz", - "integrity": "sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ==", - "dev": true, - "requires": { - "plugin-error": "^1.0.1", - "replace-ext": "^1.0.0", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" - } + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true }, - "gulp-better-rollup": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gulp-better-rollup/-/gulp-better-rollup-4.0.1.tgz", - "integrity": "sha512-oUGrMd+p9umBPoIPYVDxFT4EwCzywh3o8q++eswJyAxrRgYCEM6OOGGxJLG+AmzzjEoiq0cc/ndgF5SH2qW3Fg==", + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", "dev": true, "requires": { - "lodash.camelcase": "^4.3.0", - "plugin-error": "^1.0.1", - "vinyl": "^2.1.0", - "vinyl-sourcemaps-apply": "^0.2.1" + "cssom": "0.3.x" } }, - "gulp-htmlmin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gulp-htmlmin/-/gulp-htmlmin-5.0.1.tgz", - "integrity": "sha512-ASlyDPZOSKjHYUifYV0rf9JPDflN9IRIb8lw2vRqtYMC4ljU3zAmnnaVXwFQ3H+CfXxZSUesZ2x7jrnPJu93jA==", + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "html-minifier": "^3.5.20", - "plugin-error": "^1.0.1", - "through2": "^2.0.3" + "array-find-index": "^1.0.1" } }, - "gulp-replace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.0.0.tgz", - "integrity": "sha512-lgdmrFSI1SdhNMXZQbrC75MOl1UjYWlOWNbNRnz+F/KHmgxt3l6XstBoAYIdadwETFyG/6i+vWUSCawdC3pqOw==", + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "istextorbinary": "2.2.1", - "readable-stream": "^2.0.1", - "replacestream": "^4.0.0" + "assert-plus": "^1.0.0" } }, - "gulp-sass": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-4.0.2.tgz", - "integrity": "sha512-q8psj4+aDrblJMMtRxihNBdovfzGrXJp1l4JU0Sz4b/Mhsi2DPrKFYCGDwjIWRENs04ELVHxdOJQ7Vs98OFohg==", + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, "requires": { - "chalk": "^2.3.0", - "lodash.clonedeep": "^4.3.2", - "node-sass": "^4.8.3", - "plugin-error": "^1.0.1", - "replace-ext": "^1.0.0", - "strip-ansi": "^4.0.0", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" }, "dependencies": { - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } } } }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "date-fns": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.14.0.tgz", + "integrity": "sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "glogg": "^1.0.0" + "ms": "^2.1.1" } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "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": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" + "mimic-response": "^1.0.0" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "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 }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "has-value": { + "deepcopy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-1.0.0.tgz", + "integrity": "sha512-WJrecobaoqqgQHtvRI2/VCzWoWXPAnFYyAkF/spmL46lZMnd0gW0gLGuyeFVSrqt2B3s0oEEj6i+j2L/2QiS4g==", "dev": true, "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "type-detect": "^4.0.8" } }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "requires": { - "parse-passwd": "^1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", "dev": true }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" }, "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } }, - "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "path-type": "^3.0.0" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", + "dev": true + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" } }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "buffer-indexof": "^1.0.0" } }, - "in-publish": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", - "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { - "repeating": "^2.0.0" + "esutils": "^2.0.2" } }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "utila": "~0.4" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", "dev": true }, - "interpret": { + "domain-browser": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "webidl-conversions": "^4.0.2" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "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" - } - } + "domelementtype": "1" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "dom-serializer": "0", + "domelementtype": "1" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", "dev": true, "requires": { - "builtin-modules": "^1.0.0" + "is-obj": "^2.0.0" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "dotenv-defaults": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz", + "integrity": "sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "dotenv": "^6.2.0" }, "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" - } + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "dev": true } } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dotenv-webpack": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz", + "integrity": "sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg==", "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", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "dotenv-defaults": "^1.0.2" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "downloadjs": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/downloadjs/-/downloadjs-1.4.7.tgz", + "integrity": "sha1-9p+W+UDg0FU9rCkROYZaPNAQHjw=" }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } + } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", "dev": true }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "ejs-loader": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/ejs-loader/-/ejs-loader-0.3.7.tgz", + "integrity": "sha512-K1HBDWXQZkcIAnP5h65kWsD7o7NABvHswOH49rVHX7POGaTM2kYQfkFZVn4ZQeiRnzqbtf07LxSitOVRdR98GA==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "loader-utils": "^0.2.7", + "lodash": "^4.17.15" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" } } } }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "electron-to-chromium": { + "version": "1.3.473", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.473.tgz", + "integrity": "sha512-smevlzzMNz3vMz6OLeeCq5HRWEj2AcgccNPYnAx4Usx0IOciq9DU36RJcICcS09hXoY7t7deRfVYKD14IrGb9A==", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-reference": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.0.tgz", - "integrity": "sha512-ZVxq+5TkOx6GQdnoMm2aRdCKADdcrOWXLGzGT+vIA8DMpqEJaRk5AL1bS80zJ2bjHunVmjdzfCt0e4BymIEqKQ==", + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", "dev": true, "requires": { - "@types/estree": "0.0.44" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" }, "dependencies": { - "@types/estree": { - "version": "0.0.44", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.44.tgz", - "integrity": "sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g==", + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { - "is-unc-path": "^1.0.0" + "once": "^1.4.0" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } + } }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "envinfo": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.1.tgz", + "integrity": "sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ==", + "dev": true + }, + "enzyme": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", + "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", + "dev": true, + "requires": { + "array.prototype.flat": "^1.2.3", + "cheerio": "^1.0.0-rc.3", + "enzyme-shallow-equal": "^1.0.1", + "function.prototype.name": "^1.1.2", + "has": "^1.0.3", + "html-element-map": "^1.2.0", + "is-boolean-object": "^1.0.1", + "is-callable": "^1.1.5", + "is-number-object": "^1.0.4", + "is-regex": "^1.0.5", + "is-string": "^1.0.5", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.7.0", + "object-is": "^1.0.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1", + "object.values": "^1.1.1", + "raf": "^3.4.1", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.2.1" + } + }, + "enzyme-adapter-preact-pure": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/enzyme-adapter-preact-pure/-/enzyme-adapter-preact-pure-2.2.0.tgz", + "integrity": "sha512-wb483yuBIk5CV+E9ardATYQxVywwWRo+Z3IaIECGTOLjWQYiv9NMSJGp0qXPKGp/zj9qS9yP1/qHEE4k9sEeYA==", "dev": true, "requires": { - "unc-path-regex": "^0.1.2" + "array.prototype.flatmap": "^1.2.1", + "preact-render-to-string": "^4.1.0" + }, + "dependencies": { + "preact-render-to-string": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-4.1.0.tgz", + "integrity": "sha512-FlFBJRxo8z4cp6VsDmeYjIEx4ZK2clFJnKIvIj8K1IQCRm7ZgJ/SZ1+BotT86/Nc+V1pNtFabHoUi6gpjx5Pug==", + "dev": true, + "requires": { + "pretty-format": "^3.8.0" + } + } } }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "enzyme-shallow-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.1.tgz", + "integrity": "sha512-hGA3i1so8OrYOZSM9whlkNmVHOicJpsjgTzC+wn2JMJXhq1oO4kA4bJ5MsfzSIcC71aLDKzJ6gZpIxrqt3QTAQ==", + "dev": true, + "requires": { + "has": "^1.0.3", + "object-is": "^1.0.2" + } }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "istextorbinary": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", - "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", + "escodegen": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.2.tgz", + "integrity": "sha512-InuOIiKk8wwuOFg6x9BQXbzjrQhtyXh46K9bqVTPzSo2FnyMBaYGBMC6PhQy7yxxil9vIedFBweQBMK74/7o8A==", "dev": true, "requires": { - "binaryextensions": "2", - "editions": "^1.3.3", - "textextensions": "2" + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "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, + "optional": true + } } }, - "js-base64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", - "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==", - "dev": true - }, - "js-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", - "integrity": "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==", - "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 - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsesc": { - "version": "0.5.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "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 - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "eslint-config-preact": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-preact/-/eslint-config-preact-1.1.1.tgz", + "integrity": "sha512-jiOpPAJBFJyXyeXKXqzeNaMudUQBvhD6KXqrE7Y0wRw0y+TbZM9F6ff2PSd0pefIwqkS7LVbJUB/2E5XNv2fYQ==", "dev": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "babel-eslint": "^10.0.1", + "eslint-plugin-compat": "^3.5.1", + "eslint-plugin-jest": "^23.7.0", + "eslint-plugin-react": "^7.0.0", + "eslint-plugin-react-hooks": "^2.4.0" } }, - "just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", - "dev": true + "eslint-plugin-compat": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-3.7.0.tgz", + "integrity": "sha512-A3uzSYqUjNj6rMyaBuU3l8wSCadZjeZRZ7WF3eU9vUT0JItiqRysjmYELkHHCpH8l7wRprUu4MZPr37lFCw7iA==", + "dev": true, + "requires": { + "ast-metadata-inferer": "^0.2.0-0", + "browserslist": "^4.12.0", + "caniuse-db": "^1.0.30001059", + "core-js": "^3.6.5", + "lodash.memoize": "4.1.2", + "mdn-browser-compat-data": "^1.0.21", + "semver": "7.3.2" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "eslint-plugin-jest": { + "version": "23.13.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.13.2.tgz", + "integrity": "sha512-qZit+moTXTyZFNDqSIR88/L3rdBlTU7CuW6XmyErD2FfHEkdoLgThkRbiQjzgYnX6rfgLx3Ci4eJmF4Ui5v1Cw==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "^2.5.0" + } }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "eslint-plugin-react": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz", + "integrity": "sha512-rqe1abd0vxMjmbPngo4NaYxTcR3Y4Hrmc/jg4T+sYz63yqlmJRknpEQfmWY+eDWPuMmix6iUIK+mv0zExjeLgA==", "dev": true, "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.15.1", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } } }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "eslint-plugin-react-hooks": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz", + "integrity": "sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", "dev": true, "requires": { - "readable-stream": "^2.0.5" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, "requires": { - "flush-write-stream": "^1.0.2" + "eslint-visitor-keys": "^1.1.0" } }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "eslint-visitor-keys": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz", + "integrity": "sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ==", + "dev": true + }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "esprima": { + "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.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "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" + "estraverse": "^5.1.0" }, "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", "dev": true - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } } } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "esrecurse": { + "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": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "estraverse": "^4.1.0" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", "dev": true }, - "lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", "dev": true }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", "dev": true, "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "original": "^1.0.0" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", "dev": true }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "kind-of": "^6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" + "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": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "ms": "2.0.0" } }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "media-typer": { - "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", "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" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "requires": { - "mime-db": "~1.37.0" + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { - "brace-expansion": "^1.1.7" + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "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==" + } } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "for-in": "^1.0.2", + "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" }, "dependencies": { @@ -4959,1474 +6059,1635 @@ } } }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { - "minimist": "^1.2.5" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "dev": true - }, - "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "arr-diff": "^4.0.0", "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", "fragment-cache": "^0.2.1", - "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": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } } }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "fast-async": { + "version": "6.3.8", + "resolved": "https://registry.npmjs.org/fast-async/-/fast-async-6.3.8.tgz", + "integrity": "sha512-TjlooyqrYm/gOXjD2UHNwfrWkvTbzU105Nk4bvcRTeRoL+wIeK6rqbqDg3CN9z5p37cE2iXhP6SxQFz8OVIaUg==", "dev": true, "requires": { - "lower-case": "^1.1.1" + "nodent-compiler": "^3.2.10", + "nodent-runtime": ">=3.2.1" } }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, - "node-releases": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.2.tgz", - "integrity": "sha512-j1gEV/zX821yxdWp/1vBMN0pSUjuH9oGUdLCb4PfUko6ZW7KdRs3Z+QGGwDUhYtSpQvdVVyLd2V0YvLsmdg5jQ==", - "dev": true, - "requires": { - "semver": "^5.3.0" - } + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, - "node-sass": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", - "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", - "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash": "^4.17.15", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "2.2.5", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "dev": true - }, - "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" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { - "abbrev": "1" + "websocket-driver": ">=0.5.1" } }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "bser": "2.1.1" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "escape-string-regexp": "^1.0.5" } }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, "requires": { - "once": "^1.3.2" + "flat-cache": "^2.0.1" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "file-loader": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", "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" + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-extendable": "^0.1.0" } } } }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { - "isobject": "^3.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" } }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "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": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" + "locate-path": "^2.0.0" } }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, "requires": { - "wrappy": "1" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } } }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "dev": true, "requires": { - "readable-stream": "^2.0.1" + "debug": "=3.1.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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, - "os-homedir": { + "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", "dev": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" } }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "p-limit": "^2.0.0" + "map-cache": "^0.2.2" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { - "no-case": "^2.2.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "minipass": "^3.0.0" } }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } + } }, - "parse-passwd": { + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "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 + "function.prototype.name": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.2.tgz", + "integrity": "sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "functions-have-names": "^1.2.0" + } }, - "path-is-absolute": { + "functional-red-black-tree": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "functions-have-names": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.1.tgz", + "integrity": "sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA==", "dev": true }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "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": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "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" + } } } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", "dev": true }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "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=", + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "pinkie": "^2.0.0" + "pump": "^3.0.0" } }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" + "assert-plus": "^1.0.0" } }, - "posix-character-classes": { + "gittar": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "resolved": "https://registry.npmjs.org/gittar/-/gittar-0.1.1.tgz", + "integrity": "sha1-1pk+phYKhsi3895yKmH3O8meFLQ=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1", + "tar": "^4.4.1" + } }, - "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "dev": true, + "requires": { + "ini": "^1.3.5" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true } } }, - "postcss-value-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", - "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", - "dev": true + "globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } }, - "pretty-bytes": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", - "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==", + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", "dev": true }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "process-nextick-args": { + "har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "harmony-reflect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", + "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==", "dev": true }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "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" + } }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "ansi-regex": "^2.0.0" }, "dependencies": { - "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" - } + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - } + "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 }, - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.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" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "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": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "is-buffer": "^1.1.5" } } } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "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" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" } }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "resolve": "^1.1.6" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dev": true, "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "react-is": "^16.7.0" } }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", "dev": true }, - "regenerate-unicode-properties": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", - "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "dev": true, "requires": { - "regenerate": "^1.4.0" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } } }, - "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", "dev": true }, - "regenerator-transform": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", - "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-element-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.2.0.tgz", + "integrity": "sha512-0uXq8HsuG1v2TmQ8QkIhzbrqeskE4kn52Q18QJ9iAA/SnHoEKXWiUxHQtclRsCFWEUD2So34X+0+pZZu862nnw==", "dev": true, "requires": { - "private": "^0.1.6" + "array-filter": "^1.0.0" } }, - "regex-not": { + "html-encoding-sniffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "whatwg-encoding": "^1.0.1" } }, - "regexpu-core": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", - "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" - } + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "dev": true }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + } } }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "html-webpack-exclude-assets-plugin": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/html-webpack-exclude-assets-plugin/-/html-webpack-exclude-assets-plugin-0.0.7.tgz", + "integrity": "sha512-gaYKMGBPDts3Fb1WXyDEEcS/0TSRg2IDl3EsbQL2AkKWTqdjSKwfQ8Iz0RhPiWErJfqhq5/wkhoYyjQoG55pug==", "dev": true }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", "dev": true, "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } } }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "dev": true, "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" } }, - "replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" } }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, - "resolve": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", - "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", - "dev": true, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "path-parse": "^1.0.6" + "safer-buffer": ">= 2.1.2 < 3" } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", "dev": true, "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "postcss": "^7.0.14" } }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", "dev": true, "requires": { - "value-or-function": "^3.0.0" + "harmony-reflect": "^1.4.6" } }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", "dev": true }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } + "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 }, - "rollup": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.18.0.tgz", - "integrity": "sha512-MBAWr6ectF948gW/bs/yfi0jW7DzwI8n0tEYG/ZMQutmK+blF/Oazyhg3oPqtScCGV8bzCtL9KzlzPtTriEOJA==", + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", "dev": true, "requires": { - "@types/estree": "0.0.39", - "@types/node": "^12.6.3", - "acorn": "^6.2.0" + "import-from": "^2.1.0" } }, - "rollup-plugin-svelte": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.0.tgz", - "integrity": "sha512-4MRZG29dAWDpoxEs5uIHzDnYafQEOLaKIJAuDYUtFIzEm1F1IGSTlFyjd8/qk4wltlHdu6V7YfZY53+CKryhMg==", + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { - "require-relative": "^0.8.7", - "rollup-pluginutils": "^2.3.3", - "sourcemap-codec": "^1.4.4" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", - "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", "dev": true, "requires": { - "estree-walker": "^0.6.1" + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, - "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "dev": true, "requires": { - "tslib": "^1.9.0" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" } }, - "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==" + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "ret": "~0.1.10" + "once": "^1.3.0", + "wrappy": "1" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "sass-graph": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", - "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "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": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", "dev": true, "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^13.3.2" + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "color-name": "~1.1.4" } }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "ansi-regex": "^5.0.0" } }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "has-flag": "^4.0.0" } } } }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", "dev": true, "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" } }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", "dev": true, "requires": { - "sver-compat": "^1.5.0" + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" } }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "loose-envify": "^1.0.0" } }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "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=", + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", "dev": true }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "kind-of": "^3.0.2" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "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-extendable": "^0.1.0" + "is-buffer": "^1.1.5" } } } }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "optional": 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": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "binary-extensions": "^2.0.0" } }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "ci-info": "^2.0.0" } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", "dev": true, "requires": { - "kind-of": "^3.2.0" + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -6440,777 +7701,8122 @@ } } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "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" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "sourcemap-codec": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", - "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, - "spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "spdx-correct": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", - "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", "dev": true }, - "spdx-expression-parse": { + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, - "spdx-license-ids": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", - "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { - "extend-shallow": "^3.0.0" + "is-extglob": "^2.1.1" } }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", "dev": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" } }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, + "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-descriptor": "^0.1.0" + "is-buffer": "^1.1.5" } } } }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "dev": true, "requires": { - "readable-stream": "^2.0.1" + "is-path-inside": "^2.1.0" + }, + "dependencies": { + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + } } }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", "dev": true }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "isobject": "^3.0.1" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "has-symbols": "^1.0.1" } }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", "dev": true, "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" + "html-comment-regex": "^1.1.0" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "has-symbols": "^1.0.1" } }, - "strip-comments": { + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", - "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", - "dev": true, - "requires": { - "babel-extract-comments": "^1.0.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0" - } + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true }, - "svelte": { - "version": "3.18.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.18.1.tgz", - "integrity": "sha512-jl6VLGTytOjHu700LuXSX6LvwRKFLAxqT8McUD2f3NjMI6qakWXgXoVjT+/ZmXmr8DiwrN/074pA1o3Aye4bIA==", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "svelte-routing": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/svelte-routing/-/svelte-routing-1.2.1.tgz", - "integrity": "sha512-2lm1EwCy8bXiShW9A6sH38oqbQ8q3sqK7mgXMVTRkGSrTdwnkDHyXVwCKIcCJdWdVcNdjQUFHXbDlaoxQHdd2g==" + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dev": true, - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "isomorphic-unfetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.0.0.tgz", + "integrity": "sha512-V0tmJSYfkKokZ5mgl0cmfQMTb7MLHsBMngTkbLY0eXvKqiVRRoZP04Ly+KhKrJfKtzC9E6Pp15Jo+bwh7Vi2XQ==", "dev": true, "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" + "node-fetch": "^2.2.0", + "unfetch": "^4.0.0" } }, - "textextensions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.5.0.tgz", - "integrity": "sha512-1IkVr355eHcomgK7fgj1Xsokturx6L5S2JRT5WcRdA6v5shk9sxWuO/w/VbpQexwkXJMQIa/j1dBi3oo7+HhcA==", + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "through2": { + "istanbul-lib-coverage": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://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": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "has-flag": "^3.0.0" } } } }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "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 + } } }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "dev": true, "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "html-escaper": "^2.0.0" } }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" } } } }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" } }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", "dev": true, "requires": { - "through2": "^2.0.3" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + } + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", "dev": true, "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + } } }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", "dev": true, "requires": { - "glob": "^7.1.2" + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + } } }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "jest-environment-jsdom-fourteen": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-0.1.0.tgz", + "integrity": "sha512-4vtoRMg7jAstitRzL4nbw83VmGH8Rs13wrND3Ud2o1fczDhMUF32iIrNKwYGgeOPUdfvZU4oy8Bbv+ni1fgVCA==", "dev": true, "requires": { - "safe-buffer": "^5.0.1" + "jest-mock": "^24.5.0", + "jest-util": "^24.5.0", + "jsdom": "^14.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } }, - "type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz", - "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==", + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", "dev": true }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", "dev": true, "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" }, "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + } + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } } } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + } + } }, - "undertaker": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", - "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", "dev": true, "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" } }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "dev": true + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", "dev": true }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "jest-preset-preact": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jest-preset-preact/-/jest-preset-preact-1.0.0.tgz", + "integrity": "sha512-//ZFM5oDnAQgROUOcK7HgNrsBmYnDnvLbwDpYmyrHJnZKXIfQG+6Fz7ghJ1o+djT85MzkCcwqrYScdfxk9P37Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "@babel/core": "^7.5.5", + "babel-jest": "^24.8.0", + "identity-obj-proxy": "^3.0.0", + "isomorphic-unfetch": "^3.0.0", + "jest-environment-jsdom-fourteen": "^0.1.0" } }, - "unicode-match-property-value-ecmascript": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", - "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", "dev": true }, - "unicode-property-aliases-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", - "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", - "dev": true + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" } }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", "dev": true, "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", "dev": true }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", "dev": true, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" }, "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" } }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.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 + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + } + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-base64": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==", "dev": true }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "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 }, - "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==", + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { - "punycode": "^2.1.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "util-deprecate": { + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "utils-merge": { + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "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 + }, + "json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "dev": true, + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "local-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.0.1.tgz", + "integrity": "sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA==", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "dev": true + }, + "loose-envify": { + "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 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-browser-compat-data": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/mdn-browser-compat-data/-/mdn-browser-compat-data-1.0.25.tgz", + "integrity": "sha512-4klqILpitRnmWRai5Ols/GXP1eGDYMluAcBRoNZnGNkV2OnkDmpA9hUlM+9pTFym5FGDO5TAm3HweVSVc7ziiQ==", + "dev": true, + "requires": { + "extend": "3.0.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^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" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.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" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "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" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "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 + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz", + "integrity": "sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "moo": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", + "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "mri": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.5.tgz", + "integrity": "sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "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-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" + } + }, + "native-url": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.3.1.tgz", + "integrity": "sha512-VL0XRW8nNBdSpxqZCbLJKrLHmIMn82FZ8pJzriJgyBmErjdEtrUX6eZAJbtHjlkMooEWUV+EtJ0D5tOP3+1Piw==", + "dev": true, + "requires": { + "querystring": "^0.2.0" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nearley": { + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.19.3.tgz", + "integrity": "sha512-FpAy1PmTsUpOtgxr23g4jRNvJHYzZEW2PixXeSzksLR/ykPfwKhAodc2+9wQhY+JneWLcvkDw6q7FJIsIdF/aQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6", + "semver": "^5.4.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "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 + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-releases": { + "version": "1.1.58", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", + "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", + "dev": true + }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "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" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "nodent-compiler": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.2.11.tgz", + "integrity": "sha512-rfDrGWdgIJYomPUzR8nXiWNuIhJ7cVodPeZP3Ho65LEycuaX2uVNZ0ytpcfrmUKzdFeLRtye9+pHe8OynPZuPQ==", + "dev": true, + "requires": { + "acorn": ">= 2.5.2 <= 5.7.3", + "acorn-es7-plugin": "^1.1.7", + "nodent-transform": "^3.2.9", + "source-map": "^0.5.7" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + } + } + }, + "nodent-runtime": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/nodent-runtime/-/nodent-runtime-3.2.1.tgz", + "integrity": "sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==", + "dev": true + }, + "nodent-transform": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/nodent-transform/-/nodent-transform-3.2.9.tgz", + "integrity": "sha512-4a5FH4WLi+daH/CGD5o/JWRR8W5tlCkd3nrDSkxbOzscJTyTUITltvOJeQjg3HJ1YgEuNyiPhQbvbtRjkQBByQ==", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "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" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "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": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "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", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "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" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", + "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz", + "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "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", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "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" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "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 + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "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" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "portfinder": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.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 + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "preact": { + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.4.4.tgz", + "integrity": "sha512-EaTJrerceyAPatQ+vfnadoopsMBZAOY7ak9ogVdUi5xbpR8SoHgtLryXnW+4mQOwt21icqoVR1brkU2dq7pEBA==" + }, + "preact-cli": { + "version": "3.0.0-rc.14", + "resolved": "https://registry.npmjs.org/preact-cli/-/preact-cli-3.0.0-rc.14.tgz", + "integrity": "sha512-HDhG0zklaxro10U5Kmy5vNmibpXNv4WpdnA/oRZ4T+MhvU29iuEBRW7n1jLcmumK32wWMd0Mg7i2e0HgbJkRJg==", + "dev": true, + "requires": { + "@babel/core": "^7.9.0", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-object-assign": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.9.0", + "@babel/preset-env": "^7.9.0", + "@babel/preset-typescript": "^7.9.0", + "@preact/async-loader": "^3.0.0-rc.9", + "@prefresh/webpack": "0.7.1", + "autoprefixer": "^9.6.0", + "babel-esm-plugin": "^0.8.0", + "babel-loader": "^8.0.6", + "babel-plugin-macros": "^2.5.1", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", + "browserslist": "^4.6.4", + "compression-webpack-plugin": "^3.0.0", + "console-clear": "^1.0.0", + "copy-webpack-plugin": "^5.0.4", + "critters-webpack-plugin": "^2.5.0", + "cross-spawn-promise": "^0.10.1", + "css-loader": "^3.1.0", + "ejs-loader": "^0.3.3", + "envinfo": "^7.3.1", + "esm": "^3.2.25", + "fast-async": "^6.3.7", + "file-loader": "^6.0.0", + "fork-ts-checker-webpack-plugin": "^4.0.4", + "get-port": "^5.0.0", + "gittar": "^0.1.0", + "glob": "^7.1.4", + "html-webpack-exclude-assets-plugin": "0.0.7", + "html-webpack-plugin": "^3.2.0", + "ip": "^1.1.5", + "isomorphic-unfetch": "^3.0.0", + "kleur": "^3.0.3", + "loader-utils": "^2.0.0", + "mini-css-extract-plugin": "^0.9.0", + "minimatch": "^3.0.3", + "native-url": "0.3.1", + "optimize-css-assets-webpack-plugin": "^5.0.1", + "ora": "^4.0.3", + "postcss-load-config": "^2.1.0", + "postcss-loader": "^3.0.0", + "progress-bar-webpack-plugin": "^2.1.0", + "promise-polyfill": "^8.1.0", + "prompts": "^2.2.1", + "raw-loader": "^4.0.0", + "react-hot-loader": "^4.12.9", + "react-refresh": "0.8.2", + "require-relative": "^0.8.7", + "rimraf": "^3.0.2", + "sade": "^1.4.1", + "size-plugin": "^2.0.1", + "source-map": "^0.7.2", + "stack-trace": "0.0.10", + "style-loader": "^1.1.3", + "terser-webpack-plugin": "^2.3.5", + "typescript": "^3.4.5", + "update-notifier": "^4.1.0", + "url-loader": "^4.0.0", + "validate-npm-package-name": "^3.0.0", + "webpack": "^4.38.0", + "webpack-bundle-analyzer": "^3.3.2", + "webpack-dev-server": "^3.4.1", + "webpack-fix-style-only-entries": "^0.4.0", + "webpack-merge": "^4.1.0", + "webpack-plugin-replace": "^1.2.0", + "which": "^2.0.2", + "workbox-cacheable-response": "^5.1.3", + "workbox-core": "^5.1.3", + "workbox-precaching": "^5.1.3", + "workbox-routing": "^5.1.3", + "workbox-strategies": "^5.1.3", + "workbox-webpack-plugin": "^5.1.3" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "preact-render-spy": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/preact-render-spy/-/preact-render-spy-1.3.0.tgz", + "integrity": "sha512-6gdi9mCMlhNPv4JRoQNSKu2kEbhStfJT/bN+n3gb/NwGKNmFg9q8eac9qFTSCswsOWmkdDk2WJiUoHZImIPSyA==", + "dev": true, + "requires": { + "lodash.isequal": "^4.5.0", + "object.entries": "^1.0.4", + "preact-render-to-string": "^3.6.3" + }, + "dependencies": { + "preact-render-to-string": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-3.8.2.tgz", + "integrity": "sha512-przuZPajiurStGgxMoJP0EJeC4xj5CgHv+M7GfF3YxAdhGgEWAkhOSE0xympAFN20uMayntBZpttIZqqLl77fw==", + "dev": true, + "requires": { + "pretty-format": "^3.5.1" + } + } + } + }, + "preact-render-to-string": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-5.1.9.tgz", + "integrity": "sha512-fuuZP/nBcsYvfI5Mjs8R0wVA8jPbnAsr/UQ5Y5/p9Qg4HAz9vSVJ03iejBVw4YGV8jkUCJv0++k4zwp6qjx2Kg==", + "requires": { + "pretty-format": "^3.8.0" + } + }, + "preact-router": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/preact-router/-/preact-router-3.2.1.tgz", + "integrity": "sha512-KEN2VN1DxUlTwzW5IFkF13YIA2OdQ2OvgJTkQREF+AA2NrHRLaGbB68EjS4IeZOa1shvQ1FvEm3bSLta4sXBhg==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", + "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=" + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "progress-bar-webpack-plugin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-2.1.0.tgz", + "integrity": "sha512-UtlZbnxpYk1wufEWfhIjRn2U52zlY38uvnzFhs8rRxJxC1hSqw88JNR2Mbpqq9Kix8L1nGb3uQ+/1BiUWbigAg==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "progress": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==", + "dev": true + }, + "prompts": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", + "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.4" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "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": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dev": true, + "requires": { + "performance-now": "^2.1.0" + } + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", + "dev": true + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz", + "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + } + }, + "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": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + } + } + }, + "react-hot-loader": { + "version": "4.12.21", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.12.21.tgz", + "integrity": "sha512-Ynxa6ROfWUeKWsTHxsrL2KMzujxJVPjs385lmB2t5cHUxdoRPGind9F00tOkdc1l5WBleOF4XEAMILY1KPIIDA==", + "dev": true, + "requires": { + "fast-levenshtein": "^2.0.6", + "global": "^4.3.0", + "hoist-non-react-statics": "^3.3.0", + "loader-utils": "^1.1.0", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.1.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true + }, + "react-refresh": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.2.tgz", + "integrity": "sha512-n8GXxo3DwM2KtFEL69DAVhGc4A1THn2qjmfvSo3nze0NLCoPbywazeJPqdp0RdSGLmyhQzeyA+XPXOobbYlkzg==", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + } + } + }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "registry-auth-token": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz", + "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "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" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-babel": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", + "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-terser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", + "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^2.1.2", + "terser": "^4.6.2" + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + } + } + }, + "rst-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", + "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", + "dev": true, + "requires": { + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "sade": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.3.tgz", + "integrity": "sha512-m4BctppMvJ60W1dXnHq7jMmFe3hPJZDAH85kQ3ACTo7XZNVUuTItCQ+2HfyaMeV5cKrbw7l4vD/6We3GBxvdJw==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "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==" + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + } + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "scriptjs": { + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz", + "integrity": "sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==" + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "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": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "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", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "sirv": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.6.tgz", + "integrity": "sha512-rYpOXlNbpHiY4nVXxuDf4mXPvKz1reZGap/LkWp9TvcZ84qD/nPBjjH/6GZsgIjVMbOslnY8YYULAyP8jMn1GQ==", + "dev": true, + "requires": { + "@polka/url": "^0.5.0", + "mime": "^2.3.1" + }, + "dependencies": { + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + } + } + }, + "sirv-cli": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-0.4.6.tgz", + "integrity": "sha512-/Vj85/kBvPL+n9ibgX6FicLE8VjidC1BhlX67PYPBfbBAphzR6i0k0HtU5c2arejfU3uzq8l3SYPCwl1x7z6Ww==", + "dev": true, + "requires": { + "console-clear": "^1.1.0", + "get-port": "^3.2.0", + "kleur": "^3.0.0", + "local-access": "^1.0.1", + "sade": "^1.4.0", + "sirv": "^0.4.6", + "tinydate": "^1.0.0" + }, + "dependencies": { + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "size-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/size-plugin/-/size-plugin-2.0.1.tgz", + "integrity": "sha512-2fecZNDXLYbyNbns6vw6jhFLt8Ecjvm4ThDdFxYoF+yh7xQrxPZBCweC2c2iNHva2BUPBQ0qe6LgqFqwDxHH6Q==", + "dev": true, + "requires": { + "axios": "^0.19.0", + "chalk": "^2.4.2", + "ci-env": "^1.9.0", + "escape-string-regexp": "^1.0.5", + "glob": "^7.1.4", + "gzip-size": "^5.1.1", + "minimatch": "^3.0.4", + "pretty-bytes": "^5.3.0", + "util.promisify": "^1.0.0" + }, + "dependencies": { + "pretty-bytes": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", + "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "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", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "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" + } + } + } + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "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", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + } + }, + "string.prototype.trim": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", + "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "dev": true, + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true + }, + "style-loader": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", + "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-what": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + } + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "dev": true, + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "dependencies": { + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + } + } + }, + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "dev": true + }, + "terser": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", + "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "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 + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.7.tgz", + "integrity": "sha512-xzYyaHUNhzgaAdBsXxk2Yvo/x1NJdslUaussK3fdpBbvttm1iIwU+c26dj9UxJcwk2c5UWt5F55MUTIA8BE7Dg==", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "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 + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tinydate": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.2.0.tgz", + "integrity": "sha512-3GwPk8VhDFnUZ2TrgkhXJs6hcMAIIw4x/xkz+ayK6dGoQmp2nUwKzBXK0WnMsqkh6vfUhpqQicQF3rbshfyJkg==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "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" + } + } + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", + "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "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 + } + } + }, + "unfetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", + "integrity": "sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "update-notifier": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", + "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "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" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.0.tgz", + "integrity": "sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.26", + "schema-utils": "^2.6.5" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "watchpack": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", + "dev": true, + "requires": { + "chokidar": "^3.4.0", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "optional": 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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "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, + "optional": true + }, + "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, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "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 + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz", + "integrity": "sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", + "dev": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "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 + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "webpack-fix-style-only-entries": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/webpack-fix-style-only-entries/-/webpack-fix-style-only-entries-0.4.0.tgz", + "integrity": "sha512-6TDa56V/xSOw6CBVlhFm6J+xXY2oJzx7CEgH0dmex2Xe1rwb95KkLl3rXvSNpO4wyahwD3YnYqffDNR0LH1BNQ==", "dev": true }, - "v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1" + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", "dev": true, "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "lodash": "^4.17.15" } }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "webpack-plugin-replace": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-plugin-replace/-/webpack-plugin-replace-1.2.0.tgz", + "integrity": "sha512-1HA3etHpJW55qonJqv84o5w5GY7iqF8fqSHpTWdNwarj1llkkt4jT4QSvYs1hoaU8Lu5akDnq/spHHO5mXwo1w==", "dev": true }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" }, "dependencies": { - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "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 } } }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true, + "requires": { + "websocket-extensions": ">=0.1.1" } }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" + "iconv-lite": "0.4.24" } }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "dev": true, "requires": { - "source-map": "^0.5.1" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "which": { @@ -7235,205 +15841,303 @@ "dev": true, "requires": { "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "workbox-background-sync": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", - "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.3.tgz", + "integrity": "sha512-V/R95aPxYjbKCaVzUTihrZ9ObGOnzoA5n60r0DQ747p8Pj15/dDTYixonKhhlvavTiNezUrp+wTQBvZvcd/ETA==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3" } }, "workbox-broadcast-update": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", - "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.3.tgz", + "integrity": "sha512-HJ7FDmgweRcYp8fMiFbkmhaTjMYhMByURe5+TempnCi7cT5NNbyaG4T+rg8NWYxAeumSAB3JQF6XD/z34vRRHA==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3" } }, "workbox-build": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", - "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.3.tgz", + "integrity": "sha512-cssa2cKAi/FNp2P2m2DjF/UsXlVX6b1HgkXOjBTraFkIeyZEKxN1F1DnxOpGkdM/bPPRa7y5OmUvjOpgOd9apA==", "dev": true, "requires": { - "@babel/runtime": "^7.3.4", - "@hapi/joi": "^15.0.0", + "@babel/core": "^7.8.4", + "@babel/preset-env": "^7.8.4", + "@babel/runtime": "^7.8.4", + "@hapi/joi": "^15.1.0", + "@rollup/plugin-node-resolve": "^7.1.1", + "@rollup/plugin-replace": "^2.3.1", + "@surma/rollup-plugin-off-main-thread": "^1.1.1", "common-tags": "^1.8.0", - "fs-extra": "^4.0.2", - "glob": "^7.1.3", - "lodash.template": "^4.4.0", - "pretty-bytes": "^5.1.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "lodash.template": "^4.5.0", + "pretty-bytes": "^5.3.0", + "rollup": "^1.31.1", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-terser": "^5.2.0", + "source-map": "^0.7.3", + "source-map-url": "^0.4.0", "stringify-object": "^3.3.0", "strip-comments": "^1.0.2", - "workbox-background-sync": "^4.3.1", - "workbox-broadcast-update": "^4.3.1", - "workbox-cacheable-response": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-expiration": "^4.3.1", - "workbox-google-analytics": "^4.3.1", - "workbox-navigation-preload": "^4.3.1", - "workbox-precaching": "^4.3.1", - "workbox-range-requests": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1", - "workbox-streams": "^4.3.1", - "workbox-sw": "^4.3.1", - "workbox-window": "^4.3.1" + "tempy": "^0.3.0", + "upath": "^1.2.0", + "workbox-background-sync": "^5.1.3", + "workbox-broadcast-update": "^5.1.3", + "workbox-cacheable-response": "^5.1.3", + "workbox-core": "^5.1.3", + "workbox-expiration": "^5.1.3", + "workbox-google-analytics": "^5.1.3", + "workbox-navigation-preload": "^5.1.3", + "workbox-precaching": "^5.1.3", + "workbox-range-requests": "^5.1.3", + "workbox-routing": "^5.1.3", + "workbox-strategies": "^5.1.3", + "workbox-streams": "^5.1.3", + "workbox-sw": "^5.1.3", + "workbox-window": "^5.1.3" + }, + "dependencies": { + "pretty-bytes": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", + "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } } }, "workbox-cacheable-response": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", - "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.3.tgz", + "integrity": "sha512-lOJEwK2T4KWFNdhRFUKxTPBIO5hIYm9E/nYgMq5h/IH3iHPHlBPuFwRMaQy+TTCGWWTA85NomQOjVw1bj65RLw==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3" } }, "workbox-core": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", - "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.3.tgz", + "integrity": "sha512-TFSIPxxciX9sFaj0FDiohBeIKpwMcCyNduydi9i3LChItcndDS6TJpErxybv8aBWeCMraXt33TWtF6kKuIObNw==", "dev": true }, "workbox-expiration": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", - "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.3.tgz", + "integrity": "sha512-8YhpmIHqIx+xmtxONADc+di4a3zzCsvVHLiKq6T3vJZUPnqV2jzx+51+UHMUh3T5w5Z5SFC14l0V/jesRbuMKg==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3" } }, "workbox-google-analytics": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", - "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.3.tgz", + "integrity": "sha512-ouK6xIJa+raFcO29TgwKFU/Hv1ejqSYzCzH9lI2B/4z/Wdnb8maL6mMIojQ8j5SohwKswMZmLDl0Az2PCmX11w==", "dev": true, "requires": { - "workbox-background-sync": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1" + "workbox-background-sync": "^5.1.3", + "workbox-core": "^5.1.3", + "workbox-routing": "^5.1.3", + "workbox-strategies": "^5.1.3" } }, "workbox-navigation-preload": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", - "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.3.tgz", + "integrity": "sha512-29SPQMAccOgbq3BT9Gz7k+ydy0mcKKR0Rmkmd46tnujutiL4ooE57fBhwsA+c6OlLcYdisvilKlV2YWEtKWfgQ==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3" } }, "workbox-precaching": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", - "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.3.tgz", + "integrity": "sha512-9jjBiB00AOI0NnI320ddnhvlL3bjMrDoI3211kEaxcRWh0N2fX25uVn0O8N8u1gWY4tIfwZAn/DgtAU13cFhYA==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3" } }, "workbox-range-requests": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", - "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.3.tgz", + "integrity": "sha512-uUvEoyEUx86LJc7mtmy/6U8xuK0guXU2FnPimt17zDbsC8FSOaPxc92rxtD6xmDSYrI4FqIebypBCjgIe+sfxA==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3" } }, "workbox-routing": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", - "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.3.tgz", + "integrity": "sha512-F+sAp9Iy3lVl3BEG+pzXWVq4AftzjiFpHDaZ4Kf4vLoBoKQE0hIHet4zE5DpHqYdyw+Udhp4wrfHamX6PN6z1Q==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3" } }, "workbox-strategies": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", - "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.3.tgz", + "integrity": "sha512-wiXHfmOKnWABeIVW+/ye0e00+2CcS5y7SIj2f9zcdy2ZLEbcOf7B+yOl5OrWpBGlTUwRjIYhV++ZqiKm3Dc+8w==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3", + "workbox-routing": "^5.1.3" } }, "workbox-streams": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", - "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.3.tgz", + "integrity": "sha512-8kt70eBd1RXL0qenxEnch3Cd7VyW3O0CkeGBN4Bikt307nIV5Q0JciLA5o0CRteijawYOiTq0/px4GDBv1obgQ==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3", + "workbox-routing": "^5.1.3" } }, "workbox-sw": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", - "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.3.tgz", + "integrity": "sha512-Syk6RhYr/8VdFwXrxo5IpVz8Og2xapHTWJhqsZRF+TbxSvlaJs8hrvVPd7edn5ZiiVdPhE9NTeOTOg1+D+FGoA==", "dev": true }, + "workbox-webpack-plugin": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.3.tgz", + "integrity": "sha512-gxSkZ9GFLrMNC/8DGNRjcMhrt8iu+MMXhH/Fpo3wo9rKaSMsI7esGq0klTH/UloP9pNvBizVydysrB52eRhI7w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "fast-json-stable-stringify": "^2.0.0", + "source-map-url": "^0.4.0", + "upath": "^1.1.2", + "webpack-sources": "^1.3.0", + "workbox-build": "^5.1.3" + } + }, "workbox-window": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", - "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.3.tgz", + "integrity": "sha512-oYvfVtPLET7FUrhOzbk0R+aATVmpdQBkmDqwyFH4W2dfVqJXTvTXzuGP5Pn9oZ8jMTB3AYW43yhYBlLYM3mYyg==", "dev": true, "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^5.1.3" + } + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, "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" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "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": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } } } @@ -7444,15 +16148,62 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, "ws": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz", "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==" }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "dev": true, + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { @@ -7462,9 +16213,15 @@ "dev": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", "dev": true }, "yargs": { @@ -7485,22 +16242,59 @@ "yargs-parser": "^13.1.2" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } }, - "require-main-filename": { + "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "string-width": { @@ -7513,15 +16307,6 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.0" } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, diff --git a/package.json b/package.json index 626b6c89..b4ab6225 100644 --- a/package.json +++ b/package.json @@ -5,40 +5,46 @@ "private": true, "scripts": { "server": "node server/index", - "watch": "gulp dev", - "dev": "concurrently \"npm:watch\" \"npm:server\"", - "build": "gulp", - "start": "npm run server" + "dev": "concurrently \"npm:server\" \"preact watch\"", + "build": "preact build", + "start": "concurrently \"npm:server\" \"sirv build --cors --single --port 8080 \"", + "lint": "eslint src" }, "author": "Akash Hamirwasia", "license": "MIT", + "eslintConfig": { + "extends": "preact", + "ignorePatterns": [ + "build/" + ] + }, "dependencies": { + "dotenv": "^8.2.0", "downloadjs": "^1.4.7", - "express": "^4.16.4", - "svelte-routing": "^1.2.1", + "express": "^4.17.1", + "preact": "^10.3.2", + "preact-render-to-string": "^5.1.4", + "preact-router": "^3.2.1", + "scriptjs": "^2.5.9", "ws": "^7.3.0" }, "engines": { "node": "10.x" }, "devDependencies": { - "@babel/core": "^7.2.2", - "@babel/preset-env": "^7.2.3", - "@rollup/plugin-commonjs": "^12.0.0", - "@rollup/plugin-node-resolve": "^8.0.0", - "babel-core": "^7.0.0-bridge.0", - "babel-preset-minify": "^0.5.0", "concurrently": "^5.2.0", - "gulp": "^4.0.2", - "gulp-autoprefixer": "^7.0.1", - "gulp-babel": "^8.0.0", - "gulp-better-rollup": "^4.0.1", - "gulp-htmlmin": "^5.0.1", - "gulp-replace": "^1.0.0", - "gulp-sass": "^4.0.2", - "rollup": "^1.18.0", - "rollup-plugin-svelte": "^5.1.0", - "svelte": "^3.18.1", - "workbox-build": "^4.3.1" + "dotenv-webpack": "^1.8.0", + "enzyme": "^3.10.0", + "enzyme-adapter-preact-pure": "^2.0.0", + "eslint": "^6.0.1", + "eslint-config-preact": "^1.1.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^24.9.0", + "jest-preset-preact": "^1.0.0", + "node-sass": "^4.14.1", + "preact-cli": "^3.0.0-rc.6", + "preact-render-spy": "^1.2.1", + "sass-loader": "^8.0.2", + "sirv-cli": "^0.4.5" } } diff --git a/preact.config.js b/preact.config.js new file mode 100644 index 00000000..947412e5 --- /dev/null +++ b/preact.config.js @@ -0,0 +1,12 @@ +const Dotenv = require('dotenv-webpack'); + +module.exports = function (config, env, helpers) { + // disable css modules + // uncomment the code below when https://github.com/preactjs/preact-cli/issues/897 gets a solution + let css = helpers.getLoadersByName(config, 'css-loader')[0]; + css.loader.options.modules = false; + + config.plugins.push(new Dotenv()); + + return config; +} \ No newline at end of file diff --git a/public/App.svelte b/public/App.svelte deleted file mode 100644 index c4207aa2..00000000 --- a/public/App.svelte +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - {#if !registered} - registered = true} /> - {:else} - - {/if} - - - - - {#if !registered} - registered = true} /> - {:else} - - {/if} - - - \ No newline at end of file diff --git a/public/app.html b/public/app.html deleted file mode 100644 index 10538b55..00000000 --- a/public/app.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - App | Blaze - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/app.js b/public/app.js deleted file mode 100644 index c4412ddc..00000000 --- a/public/app.js +++ /dev/null @@ -1,19 +0,0 @@ -import App from './App.svelte'; - -const app = new App({ - target: document.body, -}); - -/** - * Register service worker in the /app scope - */ -if (navigator.serviceWorker) { - - navigator.serviceWorker.register('/sw.js', { scope: '/app' }) - .then(() => { - console.log('SW registered'); - }); - -} - -export default app; \ No newline at end of file diff --git a/public/components/Fab.svelte b/public/components/Fab.svelte deleted file mode 100644 index 01ebe029..00000000 --- a/public/components/Fab.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - \ No newline at end of file diff --git a/public/components/FileDrop.svelte b/public/components/FileDrop.svelte deleted file mode 100644 index f670c348..00000000 --- a/public/components/FileDrop.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - -
\ No newline at end of file diff --git a/public/components/Modal.svelte b/public/components/Modal.svelte deleted file mode 100644 index 8888271b..00000000 --- a/public/components/Modal.svelte +++ /dev/null @@ -1,46 +0,0 @@ - - - -{#if isOpen} - -{/if} \ No newline at end of file diff --git a/public/components/Toast/Toast.svelte b/public/components/Toast/Toast.svelte deleted file mode 100644 index b0b7cced..00000000 --- a/public/components/Toast/Toast.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -{#if visible} -
- {message} -
-{/if} \ No newline at end of file diff --git a/public/components/Toast/index.js b/public/components/Toast/index.js deleted file mode 100644 index 5521daf2..00000000 --- a/public/components/Toast/index.js +++ /dev/null @@ -1,32 +0,0 @@ -import Toast from './Toast.svelte'; - -let toast = null; - -/** - * Displays a toast with a message for some duration - * @param {String} message Message to be shown in the Toast - * @param {Number} duration Max duration for the Toast - */ -export default function useToast(message, duration=4000) { - - // Destroy the old Toast if it is still present - if (toast !== null) { - toast.$destroy(); - } - - // Create a new Toast - toast = new Toast({ - target: document.body, - intro: true, - props: { - message, - duration - }, - }); - - // Destroy the new Toast after duration - setTimeout(() => { - toast.$destroy(); - toast = null; - }, duration); -} \ No newline at end of file diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 66f8a600..00000000 --- a/public/index.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - Blaze | File sharing web app - - - - - - - - - - - - - - - - - - -
- - - - - - Beta - - - - - -
- -
- -
- -
-

Share files the modern way

-

Using just a web browser across any device on Earth!

- - - Start Sharing - - Blaze - Fast peer to peer file sharing web app ⚡ | Product Hunt Embed -
- - Devices connected using Blaze - - - - - -
- -
-
- Laptop and mobile connected together -

Easy to use

-

- Blaze is a web app, just open it in your browser, join a room, and start sharing. No need to download specific apps for different platforms. -

-
- -
- Laptop and two mobiles connected together -

Multi-device Experimental

-

- Traditionally, sharing files to multiple devices has been a hassle. With Blaze, you can share files across multiple devices with ease. -

-
- -
- Devices in different parts of the world using Blaze to share files -

Anywhere

-

- Blaze is built on modern web technologies, allowing it to work on devices far away from each other. It just needs to be connected to the internet. -

-
-
- -
- -
- "I built Blaze because I wanted a fast, radically different way to transfer files between my laptop and mobile" - -
- - Akash Hamirwasia - - Akash Hamirwasia - Creator of Blaze -
-
- -
- -
- -

Let's get sharing!

-

No registrations required, completely free

- - - Start sharing - - -
- -
- - - - - - - \ No newline at end of file diff --git a/public/scss/styles.scss b/public/scss/styles.scss deleted file mode 100644 index 783f12f9..00000000 --- a/public/scss/styles.scss +++ /dev/null @@ -1,9 +0,0 @@ -@import 'base/index'; -@import 'app/mobile'; - -// Desktop styles -@media screen and (min-width: 800px) { - - @import 'app/desktop'; - -} \ No newline at end of file diff --git a/public/utils/socketConnect.js b/public/utils/socketConnect.js deleted file mode 100644 index 60d17c4e..00000000 --- a/public/utils/socketConnect.js +++ /dev/null @@ -1,23 +0,0 @@ -import Socket from '../../utils/socket'; -import constants from '../../constants'; - -/** - * Opens a socket connection to join a room - * @param {String} room Room to join - * @param {String} username Name of the user joining the room - */ -function socketConnect(room, username) { - const socket = new Socket(new WebSocket(`ws://${window.location.host}`)); - - socket.on('open', () => { - socket.send(constants.JOIN, { - roomName: room, - name: username, - isWebRTC: true, - }); - }); - - return socket; -} - -export default socketConnect; \ No newline at end of file diff --git a/public/utils/visualizer.js b/public/utils/visualizer.js deleted file mode 100644 index c0bfae91..00000000 --- a/public/utils/visualizer.js +++ /dev/null @@ -1,284 +0,0 @@ -class Visualizer { - - constructor(width, height, canvas) { - - const dpr = window.devicePixelRatio || 1; - - this.canvas = canvas; - this.width = width; - this.height = height; - - /** - * Canvas resolution correction based on the device pixel-ratio. - * The canvas is first scaled to it's actual size based on the pixel ratio. - * Then the bounds of the canvas is reduced to display size using CSS. - * Then the contents of the canvas are upscaled by the device pixel-ratio. - * - * In the end, we get a sharper canvas with same size elements - */ - this.canvas.width = width * dpr; - this.canvas.height = height * dpr; - - this.canvas.style.width = width + 'px'; - this.canvas.style.height = height + 'px'; - - this.ctx = this.canvas.getContext('2d'); - this.ctx.scale(dpr, dpr); - - this.ctx.translate(width * 0.5, height * 0.5); - - this.nodes = []; - this.sender = { - percentage: 0 - }; - } - - /** - * Updates the positions of all the connected nodes in the graph - */ - updateAllPos() { - // Get only the connected nodes by removing the client node - const nodes = this.nodes; - - const divisions = 360/nodes.length; - - /** - * If only one 1 node is present in the network, - * then it must be placed at the centre of the canvas - */ - if (nodes.length == 1) { - nodes[0].cx = 0; - nodes[0].cy = 0; - - return; - } - - nodes.forEach((node, i) => { - // Calculate the angle that line makes - const angle = divisions*(i+1)*Math.PI/180; - const r = 100; - - node.cx = r * Math.cos(angle); - node.cy = r * Math.sin(angle); - }); - } - - /** - * Adds a node to the graph - * @param {String} name Name/Identifier of the node. Must be unique - * @param {Array} pos Array of two elements that have location values of the node - * @param {Boolean} isClient Dentoes whether the node is the current client - */ - addNode(name, isClient, pos) { - - const nodeData = { - name, - radius: 30, - cx: pos ? pos[0] : undefined, - cy: pos ? pos[1] : undefined, - textColor: isClient ? '#C5C7CC' : '#636979' - }; - - const nodeDuplID = this.nodes.findIndex(node => node.name === name); - - if (nodeDuplID > -1) - this.nodes[nodeDuplID] = nodeData; - else - this.nodes.push(nodeData); - - if (!pos) this.updateAllPos(); - - this.updateCanvas(); - } - - /** - * Removes a node from the graph - * @param {String} name Identifier of the node - */ - removeNode(name) { - const nodeDuplID = this.nodes.findIndex(node => node.name === name); - - if (nodeDuplID > -1) { - this.nodes.splice(nodeDuplID, 1); - - this.updateAllPos(); - this.updateCanvas(); - } - - } - - /** - * Updates the entire graph by redrawing the canvas - */ - updateCanvas() { - /** - * Empty the canvas, and add the updated nodes, connections and labels - */ - this.ctx.clearRect(-this.width, -this.height, 2*this.width, 2*this.height); - - /** - * Adds the connection links between all the nodes - */ - for (let i = 0; i < this.nodes.length; i++) { - for (let j = i+1; j < this.nodes.length; j++) { - - new CanvasElements.Line({ - x: this.nodes[i].cx, - y: this.nodes[i].cy, - x2: this.nodes[j].cx, - y2: this.nodes[j].cy, - borderWidth: 1.3, - borderColor: 'rgba(99, 105, 121, 0.5)', - ctx: this.ctx - }); - } - } - - /** - * Creates the file transfer indicator line - */ - if (this.sender && this.sender.name) { - this.addSender(this.sender.name, this.sender.percentage); - - this.nodes.forEach(node => { - if (node.name === this.sender.name) return; - - // Get the (x, y) coordinates of sender and receiver node - const x1 = this.sender.cx; - const y1 = this.sender.cy; - const x2 = node.cx; - const y2 = node.cy; - - // Calculate the total distance between the node - const dis = Math.sqrt(Math.pow(x1-x2, 2) + Math.pow(y1-y2, 2)) - this.sender.radius - node.radius; - // Calculate the angle of line between the nodes along x axis. - // Slope is calculated first - const angle = Math.atan2(y2-y1, x2-x1); - - // Calculate the distance based on percentage value - let r = this.sender.percentage/100*dis; - - // Create the line based on polar system - new CanvasElements.Line({ - x: x1 + this.sender.radius * Math.cos(angle), - y: y1 + this.sender.radius * Math.sin(angle), - r: r, - angle: angle, - borderWidth: 2, - borderColor: '#3BE8B0', - ctx: this.ctx - }); - }); - } - - const primaryColor = d => d.name === this.sender.name || this.sender.percentage >= 99 ? '#3BE8B0' : '#636979'; - - /** - * Adds the nodes - */ - this.nodes.forEach((node, i) => { - - /** - * Add waves to current client node - */ - if (i === 0) { - const radii = [50, 40]; - - radii.forEach(radius => - new CanvasElements.Circle({ - x: node.cx, - y: node.cy, - r: radius, - // If the current client is the sender, then show green waves, otherwise gray - background: this.sender.name === node.name ? 'rgba(59, 232, 176, 0.1)' : 'rgba(99, 105, 121, 0.1)', - ctx: this.ctx - }) - ); - } - - new CanvasElements.Circle({ - x: node.cx, - y: node.cy, - r: node.radius, - background: '#0D1322', - borderColor: primaryColor(node), - borderWidth: 2.5, - ctx: this.ctx - }); - }); - - /** - * Adds the avatar text - */ - this.nodes.forEach(node => { - new CanvasElements.Text({ - x: node.cx, - y: node.cy, - text: node.name[0].toUpperCase(), - font: '"Rubik", sans-serif', - align: 'center', - baseline: 'middle', - size: node.radius/1.2, - background: primaryColor(node), - ctx: this.ctx - }) - }); - - /** - * Adds the nickname labels - */ - this.nodes.forEach(node => - new CanvasElements.Text({ - x: node.cx, - y: node.cy + node.radius + 20, - text: node.name, - font: '"Rubik", sans-serif', - align: 'center', - baseline: 'middle', - size: 13, - background: node.textColor, - weight: '500', - ctx: this.ctx - }) - ); - } - - - /** - * Adds the sender client - * @param {String} name Name of the client who is sending the files - * @param {Number} percentage Completed file transfer percentage - */ - addSender(name, percentage=0) { - this.sender = { - ...this.nodes.filter(node => node.name === name)[0], - percentage - }; - } - - /** - * Removes the sender client and resets for next file transfer - */ - removeSender() { - this.sender = { - percentage: 0 - }; - - this.updateCanvas(); - } - - /** - * Updates the file transfer percentage - * @param {Number} percentage Completed file transfer percentage - */ - setTransferPercentage(percentage) { - if (percentage > 100) percentage = 100; - - this.sender.percentage = percentage; - - this.updateCanvas(); - } - -} - -export default Visualizer; \ No newline at end of file diff --git a/public/views/FileTransfer.svelte b/public/views/FileTransfer.svelte deleted file mode 100644 index 2c0a6d1e..00000000 --- a/public/views/FileTransfer.svelte +++ /dev/null @@ -1,469 +0,0 @@ - - -
-
-
- -
- -
- - - {#if percentage !== null} -
- {Math.floor(percentage)}% -
- {/if} - -
- {backend} -
-
- - - selectFiles(ev.target.files)} - multiple - > - - {#if files.length} -
-
-
-

Files

-
-
    - - {#each files as file} -
  • -
    -

    {file.name}

    -
    {formatSize(file.size)}
    -
    - - {#if file.sent} - -
    - {:else} - - - - - {/if} -
  • - {/each} - -
-
-
- {/if} - -
- - document.getElementById('inpFiles').click()} - /> - - {#if isSelectorEnabled} - selectFiles(files)} - /> - {/if} - -
- - - - -
-

Connection Error!

- -

- {errorModal.message} -

- - - -
-
\ No newline at end of file diff --git a/public/views/NewUser.svelte b/public/views/NewUser.svelte deleted file mode 100644 index c67fb026..00000000 --- a/public/views/NewUser.svelte +++ /dev/null @@ -1,38 +0,0 @@ - - -
- -
- - -
- - -
\ No newline at end of file diff --git a/public/views/Rooms.svelte b/public/views/Rooms.svelte deleted file mode 100644 index df9e7e38..00000000 --- a/public/views/Rooms.svelte +++ /dev/null @@ -1,111 +0,0 @@ - - - -
- -
-

Recent Rooms

-
- -
- - {#if onLine} -
    - {#if rooms && rooms.length} - {#each rooms as room} -
  • navigate(`/app/t/${room}`)} - tabindex="0" - > -
    {room}
    -
  • - {/each} - {/if} -
- newRoomModal.isOpen = true} - /> - {:else} -
Connect to the internet to start sharing files
- {/if} - -
- -
- - - -
- - - -
-
diff --git a/static/fonts/icomoon.eot b/src/assets/fonts/icomoon.eot similarity index 100% rename from static/fonts/icomoon.eot rename to src/assets/fonts/icomoon.eot diff --git a/static/fonts/icomoon.svg b/src/assets/fonts/icomoon.svg similarity index 100% rename from static/fonts/icomoon.svg rename to src/assets/fonts/icomoon.svg diff --git a/static/fonts/icomoon.ttf b/src/assets/fonts/icomoon.ttf similarity index 100% rename from static/fonts/icomoon.ttf rename to src/assets/fonts/icomoon.ttf diff --git a/static/fonts/icomoon.woff b/src/assets/fonts/icomoon.woff similarity index 100% rename from static/fonts/icomoon.woff rename to src/assets/fonts/icomoon.woff diff --git a/static/images/apple-touch-icon-120x120.png b/src/assets/images/apple-touch-icon-120x120.png similarity index 100% rename from static/images/apple-touch-icon-120x120.png rename to src/assets/images/apple-touch-icon-120x120.png diff --git a/static/images/apple-touch-icon-144x144.png b/src/assets/images/apple-touch-icon-144x144.png similarity index 100% rename from static/images/apple-touch-icon-144x144.png rename to src/assets/images/apple-touch-icon-144x144.png diff --git a/static/images/apple-touch-icon-152x152.png b/src/assets/images/apple-touch-icon-152x152.png similarity index 100% rename from static/images/apple-touch-icon-152x152.png rename to src/assets/images/apple-touch-icon-152x152.png diff --git a/static/images/favicon-16x16.png b/src/assets/images/favicon-16x16.png similarity index 100% rename from static/images/favicon-16x16.png rename to src/assets/images/favicon-16x16.png diff --git a/static/images/favicon-32x32.png b/src/assets/images/favicon-32x32.png similarity index 100% rename from static/images/favicon-32x32.png rename to src/assets/images/favicon-32x32.png diff --git a/static/images/favicon.ico b/src/assets/images/favicon.ico similarity index 100% rename from static/images/favicon.ico rename to src/assets/images/favicon.ico diff --git a/static/images/icon-192.png b/src/assets/images/icon-192.png similarity index 100% rename from static/images/icon-192.png rename to src/assets/images/icon-192.png diff --git a/static/images/icon-512.png b/src/assets/images/icon-512.png similarity index 100% rename from static/images/icon-512.png rename to src/assets/images/icon-512.png diff --git a/static/images/illustrations/network_compress.png b/src/assets/images/illustrations/network_compress.png similarity index 100% rename from static/images/illustrations/network_compress.png rename to src/assets/images/illustrations/network_compress.png diff --git a/static/images/illustrations/three_devices_compress.png b/src/assets/images/illustrations/three_devices_compress.png similarity index 100% rename from static/images/illustrations/three_devices_compress.png rename to src/assets/images/illustrations/three_devices_compress.png diff --git a/static/images/illustrations/two_devices_compress.png b/src/assets/images/illustrations/two_devices_compress.png similarity index 100% rename from static/images/illustrations/two_devices_compress.png rename to src/assets/images/illustrations/two_devices_compress.png diff --git a/static/images/illustrations/world_compressed.png b/src/assets/images/illustrations/world_compressed.png similarity index 100% rename from static/images/illustrations/world_compressed.png rename to src/assets/images/illustrations/world_compressed.png diff --git a/static/images/mstile-144x144.png b/src/assets/images/mstile-144x144.png similarity index 100% rename from static/images/mstile-144x144.png rename to src/assets/images/mstile-144x144.png diff --git a/static/images/noise.png b/src/assets/images/noise.png similarity index 100% rename from static/images/noise.png rename to src/assets/images/noise.png diff --git a/src/components/Fab/index.js b/src/components/Fab/index.js new file mode 100644 index 00000000..946c7214 --- /dev/null +++ b/src/components/Fab/index.js @@ -0,0 +1,16 @@ +import { h } from 'preact'; + +function Fab({ children, icon, ...props }) { + + return ( + + ); +} + +export default Fab; \ No newline at end of file diff --git a/src/components/FileDrop/index.js b/src/components/FileDrop/index.js new file mode 100644 index 00000000..12a89580 --- /dev/null +++ b/src/components/FileDrop/index.js @@ -0,0 +1,35 @@ +import { h } from 'preact'; +import { useState } from 'preact/hooks'; + +function FileDrop({ onFile, ...props }) { + const [border, setBorder] = useState('none'); + + const handleDrag = borderStyle => e => { + e.preventDefault(); + setBorder(borderStyle); + } + + const dropHandler = e => { + e.preventDefault(); + + const files = e.dataTransfer.files; + setBorder('none'); + + if (files != null) { + onFile(files); + } + } + + return ( +
+ ); +} + +export default FileDrop; \ No newline at end of file diff --git a/src/components/Modal/index.js b/src/components/Modal/index.js new file mode 100644 index 00000000..7631384b --- /dev/null +++ b/src/components/Modal/index.js @@ -0,0 +1,42 @@ +import { h } from 'preact'; +import { createPortal } from 'preact/compat'; +import { useEffect } from 'preact/hooks'; + +function Modal({ isClosable, isOpen, onClose, children }) { + + useEffect(() => { + document.getElementById('app').style.filter = isOpen ? 'blur(18px)' : ''; + document.body.classList.toggle('no-bg-image', isOpen); + }, [ isOpen ]); + + const ModalRender = ( + + ); + + if (isOpen) { + return createPortal(ModalRender, document.body); + } + + return null; +} + +Modal.defaultProps = { + isClosable: true, +}; + +export default Modal; \ No newline at end of file diff --git a/src/index.js b/src/index.js new file mode 100644 index 00000000..50875942 --- /dev/null +++ b/src/index.js @@ -0,0 +1,28 @@ +import { h, Component } from 'preact'; +import { Router, Route } from 'preact-router'; + +// Code-splitting is automated for routes +import Home from './routes/Home'; +import App from './routes/App'; + +export default class Blaze extends Component { + + /** Gets fired when the route changes. + * @param {Object} event "change" event from [preact-router](http://git.io/preact-router) + * @param {string} event.url The newly routed URL + */ + handleRoute = e => { + this.currentUrl = e.url; + }; + + render() { + return ( +
+ + + + +
+ ); + } +} \ No newline at end of file diff --git a/static/manifest.json b/src/manifest.json similarity index 78% rename from static/manifest.json rename to src/manifest.json index ac20ddea..e69a24af 100644 --- a/static/manifest.json +++ b/src/manifest.json @@ -3,12 +3,12 @@ "name": "Blaze - File sharing", "icons": [ { - "src": "/images/icon-192.png", + "src": "/assets/images/icon-192.png", "type": "image/png", "sizes": "192x192" }, { - "src": "/images/icon-512.png", + "src": "/assets/images/icon-512.png", "type": "image/png", "sizes": "512x512" } diff --git a/src/routes/App/FileTransfer/index.js b/src/routes/App/FileTransfer/index.js new file mode 100644 index 00000000..914f5920 --- /dev/null +++ b/src/routes/App/FileTransfer/index.js @@ -0,0 +1,347 @@ +import { h, Component, createRef } from 'preact'; +import download from 'downloadjs'; +import { route } from 'preact-router'; +import Fab from '../../../components/Fab'; +import Modal from '../../../components/Modal'; +import FileDrop from '../../../components/FileDrop'; + +import SocketConnect from '../../../utils/socketConnect'; +import Visualizer from '../../../utils/visualizer'; +import formatSize from '../../../utils/formatSize'; +import constants from '../../../../constants'; + +class FileTransfer extends Component { + + constructor(props) { + super(props); + const { room } = props; + const savedData = JSON.parse(localStorage.getItem('blaze')); + this.client = { + ...savedData.user, + room: room, + }; + + this.state = { + percentage: null, + peers: [], + isP2P: true, + files: [], + errorModal: { + isOpen: false, + message: '', + } + }; + + this.canvas = createRef(); + + /** + * Add the current room in recent rooms list + */ + if (!savedData.rooms.includes(room)) { + localStorage.setItem('blaze', JSON.stringify({ + ...savedData, + rooms: [ + room, + ...savedData.rooms, + ], + })); + } + } + + get isSelectorEnabled() { + return this.state.percentage === null ? (this.state.peers.length - 1 > 0) : false; + } + + onUserJoin(users) { + let isP2P = this.state.isP2P; + + users.forEach(user => { + if (user.name === this.client.name) return; + + isP2P = isP2P && !!user.peerId; + this.visualizer.addNode({ + name: user.name, + peerId: user.peerId, + }); + }); + + this.setState({ + peers: users.map(user => user.name), + isP2P, + }); + } + + onUserLeave(user) { + this.visualizer.removeNode(user); + this.setState({ + peers: this.state.peers.filter(peer => peer !== user), + }); + } + + + /** + * DOM is reset to prepare for the next file transfer + */ + resetState() { + this.visualizer.stopSharing(); + this.setState({ + percentage: null, + files: this.state.files.map(file => { + file.sent = true; + return file; + }), + }); + + // Remove the file from the input + document.getElementById('inpFiles').value = ''; + } + + selectFiles(inputFiles) { + + /** + * Firefox for mobile has issue with selection of multiple files. + * Only one file gets selected and that has '0' size. This is + * checked here before proceeding to transfer the invalid file. + */ + if (inputFiles[0].size === 0) { + // useToast('Multiple files not supported'); + return; + } + + /** + * Start sending files + */ + this.fileShare + .sendFiles({ + numPeers: this.state.peers.length, + input: inputFiles, + useTorrent: this.state.isP2P, + + onMeta: (metaData) => { + this.setState({ + files: [...metaData, ...this.state.files], + }); + }, + onTorrentProgress: ({ wires }) => { + this.visualizer.startSharing( + wires + .filter(wire => wire.uploadSpeed()) + .map(wire => wire.peerId), + [] + ); + }, + onSocketProgress: ({ progress }) => { + const percentage = progress * 100; + this.setState({ percentage }); + this.visualizer.startSharing(); + + if (percentage >= 100) { + this.resetState(); + } + }, + onDone: () => { + this.setState({ + files: this.state.files.map(file => ({ ...file, sent: true })), + }); + this.visualizer.stopSharing(); + }, + }); + } + + componentDidMount() { + this.visualizer = new Visualizer(Math.floor(window.innerWidth / 2), Math.floor(window.innerHeight / 2), this.canvas.current); + this.fileShare = new SocketConnect(this.client.room, this.client.name); + + this.visualizer.addNode({ + name: this.client.name, + isClient: true, + }); + + this.fileShare.socket.listen(constants.USER_JOIN, this.onUserJoin.bind(this)); + this.fileShare.socket.listen(constants.USER_LEAVE, this.onUserLeave.bind(this)); + this.fileShare.socket.on('close', data => { + this.setState({ + errorModal: { + isOpen: true, + message: data.reason, + }, + }); + }); + + + this.fileShare.receiveFiles({ + onMeta: (data) => { + this.sender = data.user; + this.setState({ + files: [...data.meta, ...this.state.files], + }); + }, + onProgress: ({ progress, wires }) => { + const receivedBy = []; + const sentTo = []; + + if (wires !== undefined) { + wires.forEach(wire => { + if (wire.uploadSpeed()) { + sentTo.push(wire.peerId); + } else if (wire.downloadSpeed()) { + receivedBy.push(wire.peerId); + } + }); + } + else { + receivedBy.push(sender); + } + + this.visualizer.startSharing(sentTo, receivedBy); + this.setState({ + percentage: progress * 100, + }); + }, + onDone: (file) => { + if (file !== undefined) { + if (Array.isArray(file)) { + file.forEach(file => { + file.getBlob((err, blob) => download(blob, file.name)); + }); + } + else { + download(file); + } + } + this.resetState(); + }, + }); + } + + handleNewRoom() { + this.setState({ + errorModal: { + isOpen: false, + }, + }); + + route('/app', true); + } + + componentWillUnmount() { + this.fileShare.socket.close(); + } + + render({ room }, { percentage, peers, isP2P, files, errorModal }) { + + return ( +
+
+
+ +
+ +
+ + + { + percentage !== null && ( +
+ {Math.floor(percentage)}% +
+ ) + } + +
+ { + peers.length <= 1 ? 'Waiting for other devices to join same room' + : isP2P === true ? 'Established a P2P connection' + : 'Using an intermediate server' + } +
+
+ + + this.selectFiles(e.target.files)} + multiple + /> + + { + !!files.length && ( +
+
+
+

Files

+
+
    + + { + files.map(file => ( +
  • +
    +

    {file.name}

    + {
    {formatSize(file.size)}
    } +
    + + { + file.sent ?
    + : ( + + + + ) + } +
  • + )) + } + +
+
+
+ ) + } + + document.getElementById('inpFiles').click()} + > + Add File + + +
+ + +
+

Connection Error!

+ +

+ {errorModal.message} +

+ + +
+
+ + this.selectFiles(files)} /> +
+ ); + } +} + +export default FileTransfer; \ No newline at end of file diff --git a/src/routes/App/NewUser/index.js b/src/routes/App/NewUser/index.js new file mode 100644 index 00000000..4a797532 --- /dev/null +++ b/src/routes/App/NewUser/index.js @@ -0,0 +1,40 @@ +import { h } from 'preact'; +import { useState } from 'preact/hooks'; +import { route } from 'preact-router'; + +function NewUser({ onRegister }) { + const [username, setUsername] = useState(''); + + const registerUser = () => { + localStorage.setItem('blaze', JSON.stringify({ + user: { + name: username + }, + rooms: [], + })); + + onRegister(); + }; + + return ( +
+ +
+ setUsername(e.target.value)} + /> + +
+
+ ); +} + +export default NewUser; \ No newline at end of file diff --git a/src/routes/App/Rooms/index.js b/src/routes/App/Rooms/index.js new file mode 100644 index 00000000..5bb3e8f2 --- /dev/null +++ b/src/routes/App/Rooms/index.js @@ -0,0 +1,116 @@ +import { h, Component } from 'preact'; +import { route } from 'preact-router'; +import { useState, useEffect } from 'preact/hooks'; + +import Fab from '../../../components/Fab'; +import Modal from '../../../components/Modal'; + + +function NewRoomModal({ onNewRoom, ...props }) { + const [room, setRoom] = useState(); + + const handleSubmit = e => { + e.preventDefault(); + onNewRoom(room); + }; + + return ( + +
+ setRoom(e.target.value)} + /> + +
+
+ ); +} + + +function Rooms() { + const [isModalOpen, setModal] = useState(false); + const [isOnline, setOnline] = useState(navigator.onLine); + let data = JSON.parse(localStorage.getItem('blaze')); + const [rooms, setRooms] = useState(data.rooms); + + const onOnline = () => { + setOnline(navigator.onLine); + }; + + const handleNewRoom = (room) => { + setModal(false); + route(`/app/t/${room.toLowerCase()}`); + }; + + const removeRoom = (room) => { + const newRooms = rooms.filter(roomName => roomName !== room); + setRooms(newRooms); + + data = { + ...data, + rooms: newRooms, + }; + + localStorage.setItem('blaze', JSON.stringify(data)); + }; + + useEffect(() => { + window.addEventListener('online', onOnline); + + return () => window.removeEventListener('online', onOnline); + }, []); + + return ( + <> +
+

Recent Rooms

+
+ +
+ { + isOnline ? ( + <> +
    + { + rooms.map(room => ( +
  • route(`/app/t/${room}`)}> +
    {room}
    +
  • + )) + } +
+ setModal(true)}> + New Room + + + ) :
Connect to the internet to start sharing files
+ } +
+ + setModal(false)} + /> + + ); +} + +export default Rooms; \ No newline at end of file diff --git a/src/routes/App/app.scss b/src/routes/App/app.scss new file mode 100644 index 00000000..d76ff7d3 --- /dev/null +++ b/src/routes/App/app.scss @@ -0,0 +1,9 @@ +@import '../../scss/base/index'; +@import '../../scss/app/mobile'; + +// Desktop styles +@media screen and (min-width: 800px) { + + @import '../../scss/app/desktop'; + +} \ No newline at end of file diff --git a/src/routes/App/index.js b/src/routes/App/index.js new file mode 100644 index 00000000..2362c4fc --- /dev/null +++ b/src/routes/App/index.js @@ -0,0 +1,39 @@ +import { h } from 'preact'; +import { useState, useEffect } from 'preact/hooks'; +import { Router } from 'preact-router'; + +import Rooms from './Rooms'; +import NewUser from './NewUser'; +import FileTransfer from './FileTransfer'; + +import './app.scss'; + +export default function App() { + const [isRegistered, setRegistered] = useState(!!window.localStorage.getItem('blaze')); + const [isLoaded, setLoaded] = useState(false); + + if (!isRegistered) { + return setRegistered(true)} /> + } + + useEffect(() => { + document.title = 'App | Blaze'; + const scriptjs = require('scriptjs'); + + scriptjs([ + 'https://unpkg.com/canvas-elements/build/cdn/canvas-elements.min.js', + 'https://cdn.jsdelivr.net/npm/webtorrent@latest/webtorrent.min.js' + ], function() { + setLoaded(true); + }); + }, []); + + return ( + isLoaded ? ( + + + + + ) : null + ); +} \ No newline at end of file diff --git a/src/routes/Home/index.js b/src/routes/Home/index.js new file mode 100644 index 00000000..a1db2216 --- /dev/null +++ b/src/routes/Home/index.js @@ -0,0 +1,116 @@ +import { h } from 'preact'; +import network from '../../assets/images/illustrations/network_compress.png'; +import twoDevices from '../../assets/images/illustrations/two_devices_compress.png'; +import threeDevices from '../../assets/images/illustrations/three_devices_compress.png'; +import world from '../../assets/images/illustrations/world_compressed.png'; +import './index.scss'; + +const Home = () => ( + <> +
+ + + + + + Beta + + + + + +
+ +
+
+ +
+

Share files the modern way

+

Using just a web browser across any device on Earth!

+ + + Start Sharing + + Blaze - Fast peer to peer file sharing web app ⚡ | Product Hunt Embed +
+ + Devices connected using Blaze + + {/* + + */} + +
+ + +
+
+ Laptop and mobile connected together +

Easy to use

+

+ Blaze is a web app, just open it in your browser, join a room, and start sharing. No need to download specific apps for different platforms. +

+
+ +
+ Laptop and two mobiles connected together +

Multi-device Experimental

+

+ Traditionally, sharing files to multiple devices has been a hassle. With Blaze, you can share files across multiple devices with ease. +

+
+ +
+ Devices in different parts of the world using Blaze to share files +

Anywhere

+

+ Blaze is built on modern web technologies, allowing it to work on devices far away from each other. It just needs to be connected to the internet. +

+
+
+ +
+ +
+ "I built Blaze because I wanted a fast, radically different way to transfer files between my laptop and mobile" + +
+ + Akash Hamirwasia + + Akash Hamirwasia + Creator of Blaze +
+
+ +
+ +
+ +

Let's get sharing!

+

No registrations required, completely free

+ + + Start sharing + + +
+ + + +
+ +); + +export default Home; diff --git a/public/scss/index.scss b/src/routes/Home/index.scss similarity index 92% rename from public/scss/index.scss rename to src/routes/Home/index.scss index 75aabf6e..53543821 100644 --- a/public/scss/index.scss +++ b/src/routes/Home/index.scss @@ -1,4 +1,4 @@ -@import 'base/index'; +@import '../../scss/base/index'; $header-height: 80px; diff --git a/public/scss/app/_desktop.scss b/src/scss/app/_desktop.scss similarity index 100% rename from public/scss/app/_desktop.scss rename to src/scss/app/_desktop.scss diff --git a/public/scss/app/_mobile.scss b/src/scss/app/_mobile.scss similarity index 100% rename from public/scss/app/_mobile.scss rename to src/scss/app/_mobile.scss diff --git a/public/scss/base/_fonts.scss b/src/scss/base/_fonts.scss similarity index 72% rename from public/scss/base/_fonts.scss rename to src/scss/base/_fonts.scss index d98f5cf2..9e6255cb 100644 --- a/public/scss/base/_fonts.scss +++ b/src/scss/base/_fonts.scss @@ -1,10 +1,10 @@ @font-face { font-family: 'icomoon'; - src: url('/fonts/icomoon.eot'); - src: url('/fonts/icomoon.eot#iefix') format('embedded-opentype'), - url('/fonts/icomoon.ttf') format('truetype'), - url('/fonts/icomoon.woff') format('woff'), - url('/fonts/icomoon.svg#icomoon') format('svg'); + src: url('../../assets/fonts/icomoon.eot'); + src: url('../../assets/fonts/icomoon.eot#iefix') format('embedded-opentype'), + url('../../assets/fonts/icomoon.ttf') format('truetype'), + url('../../assets/fonts/icomoon.woff') format('woff'), + url('../../assets/fonts/icomoon.svg#icomoon') format('svg'); font-weight: normal; font-style: normal; } diff --git a/public/scss/base/_index.scss b/src/scss/base/_index.scss similarity index 100% rename from public/scss/base/_index.scss rename to src/scss/base/_index.scss diff --git a/public/scss/base/_variables.scss b/src/scss/base/_variables.scss similarity index 83% rename from public/scss/base/_variables.scss rename to src/scss/base/_variables.scss index cb8ff877..7b2fc2c9 100644 --- a/public/scss/base/_variables.scss +++ b/src/scss/base/_variables.scss @@ -11,4 +11,4 @@ $border: 1px solid #1C2439; $font-normal: 400; $font-bold: 500; -$noise: url(../images/noise.png); +$noise: url(../../assets/images/noise.png); diff --git a/src/template.html b/src/template.html new file mode 100644 index 00000000..4fa1064f --- /dev/null +++ b/src/template.html @@ -0,0 +1,28 @@ + + + + + Blaze | File sharing web app + + + + + + + + + + + + + + + + + + <% preact.headEnd %> + + + <% preact.bodyEnd %> + + \ No newline at end of file diff --git a/public/utils/formatSize.js b/src/utils/formatSize.js similarity index 100% rename from public/utils/formatSize.js rename to src/utils/formatSize.js From f57acb24e0109d95b727aa9422ea7bb9eb008b09 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 16:59:39 +0530 Subject: [PATCH 009/127] Add Preact specific files --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 04c01ba7..673b9b22 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules/ -dist/ \ No newline at end of file +build/ +size-plugin.json \ No newline at end of file From 5ac667c906e8bca4ad88b9fb08ac7507ab53fe3d Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 18:05:54 +0530 Subject: [PATCH 010/127] Fix clashing styles --- src/components/Header/index.js | 31 +++++++ src/components/Header/styles.scss | 119 ++++++++++++++++++++++++++ src/routes/App/FileTransfer/index.js | 2 +- src/routes/App/NewUser/index.js | 4 +- src/routes/App/Rooms/index.js | 2 +- src/routes/App/index.js | 22 +++-- src/routes/Home/index.js | 29 +------ src/routes/Home/index.scss | 120 +-------------------------- src/scss/app/_desktop.scss | 5 +- src/scss/app/_mobile.scss | 4 +- 10 files changed, 177 insertions(+), 161 deletions(-) create mode 100644 src/components/Header/index.js create mode 100644 src/components/Header/styles.scss diff --git a/src/components/Header/index.js b/src/components/Header/index.js new file mode 100644 index 00000000..7cd081cf --- /dev/null +++ b/src/components/Header/index.js @@ -0,0 +1,31 @@ +import { h } from 'preact'; +import './styles.scss'; + +function Header() { + return ( + + ); +} + +export default Header; \ No newline at end of file diff --git a/src/components/Header/styles.scss b/src/components/Header/styles.scss new file mode 100644 index 00000000..2e00ffa8 --- /dev/null +++ b/src/components/Header/styles.scss @@ -0,0 +1,119 @@ +@import '../../scss/base/index'; + +$header-height: 80px; + +.page-header { + display: flex; + // padding: 0 60px; + height: $header-height; + position: fixed; + left: 0; + padding: 0 30px; + width: 100%; + z-index: 2; + background: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.6) 150%); + + .brand { + display: flex; + align-items: center; + z-index: 3; + + svg { + transition: all 0.3s ease; + } + + .pill { + margin-left: 15px; + } + + &:hover svg { + filter: drop-shadow(0 0 20px rgba($primary, 0.5)); + } + } + + .mobile-menu { + line-height: $header-height; + font-size: 20px; + margin-left: auto; + z-index: 3; + height: auto; + text-align: right; + padding: 0; + width: 80px; + } + + nav { + margin-left: auto; + + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba($bg, 0.9); + background-image: $noise; + background-size: 32%; + display: none; + flex-direction: column; + justify-content: center; + text-align: center; + + a { + display: inline-block; + // margin: 0 13px; + margin: 0; + font-weight: $font-bold; + font-size: 16px; + // height: 100%; + line-height: $header-height; + width: 100%; + transition: color 0.3s ease; + + &:last-child { + margin-right: 0; + } + + &:hover { + color: $primary; + } + + &.ph-desktop { + display: none; + } + + } + } +} + +@media screen and (min-width: 800px) { + .page-header { + padding: 0 60px; + + .mobile-menu { + display: none; + } + + nav { + position: static; + display: initial !important; + text-align: left; + background-color: transparent; + background-image: none; + + a { + margin: 0 13px; + width: auto; + height: 100%; + + &.ph-desktop { + display: inline; + + img { + vertical-align: middle; + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/routes/App/FileTransfer/index.js b/src/routes/App/FileTransfer/index.js index 914f5920..a413396c 100644 --- a/src/routes/App/FileTransfer/index.js +++ b/src/routes/App/FileTransfer/index.js @@ -232,7 +232,7 @@ class FileTransfer extends Component { return (
-
+
- -
- +
+
@@ -110,7 +89,7 @@ const Home = () => (
- +
); export default Home; diff --git a/src/routes/Home/index.scss b/src/routes/Home/index.scss index 53543821..1c7823d0 100644 --- a/src/routes/Home/index.scss +++ b/src/routes/Home/index.scss @@ -1,100 +1,15 @@ @import '../../scss/base/index'; -$header-height: 80px; - html { // TODO: Remove this overflow-x: hidden; } -body { +.page-container { padding: 0 30px; overflow-x: hidden; } -header { - display: flex; - // padding: 0 60px; - height: $header-height; - position: fixed; - left: 0; - padding: 0 30px; - width: 100%; - z-index: 2; - background: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.6) 150%); - - .brand { - display: flex; - align-items: center; - z-index: 3; - - svg { - transition: all 0.3s ease; - } - - .pill { - margin-left: 15px; - } - - &:hover svg { - filter: drop-shadow(0 0 20px rgba($primary, 0.5)); - } - } - - .mobile-menu { - line-height: $header-height; - font-size: 20px; - margin-left: auto; - z-index: 3; - height: auto; - text-align: right; - padding: 0; - width: 80px; - } - - nav { - margin-left: auto; - - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - background-color: rgba($bg, 0.9); - background-image: $noise; - background-size: 32%; - display: none; - flex-direction: column; - justify-content: center; - text-align: center; - - a { - display: inline-block; - // margin: 0 13px; - margin: 0; - font-weight: $font-bold; - font-size: 16px; - // height: 100%; - line-height: $header-height; - width: 100%; - transition: color 0.3s ease; - - &:last-child { - margin-right: 0; - } - - &:hover { - color: $primary; - } - - &.ph-desktop { - display: none; - } - - } - } -} - .hero { display: flex; align-items: center; @@ -262,39 +177,8 @@ svg.waves { @media screen and (min-width: 800px) { - body { - padding: 0 60px; - } - - header { + .page-container { padding: 0 60px; - - .mobile-menu { - display: none; - } - - nav { - position: static; - display: initial !important; - text-align: left; - background-color: transparent; - background-image: none; - - a { - margin: 0 13px; - width: auto; - height: 100%; - - &.ph-desktop { - display: inline; - - img { - vertical-align: middle; - } - } - } - } - } .hero { diff --git a/src/scss/app/_desktop.scss b/src/scss/app/_desktop.scss index cedf5b5e..4a4573ac 100644 --- a/src/scss/app/_desktop.scss +++ b/src/scss/app/_desktop.scss @@ -2,10 +2,7 @@ body { div { - - &#app { - - + &.app-container { ul.recent-rooms { display: flex; diff --git a/src/scss/app/_mobile.scss b/src/scss/app/_mobile.scss index d8c81309..7e5d3450 100644 --- a/src/scss/app/_mobile.scss +++ b/src/scss/app/_mobile.scss @@ -8,7 +8,7 @@ body { div { - &#app { + &.app-container { display: flex; flex-direction: column; padding: 2rem 1.6rem; @@ -287,7 +287,7 @@ body { } -header { +.app-header { display: flex; margin: 0 0 25px; From c33cb8a9c433acf65a9c128315f7f4ee2a4b1a07 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 18:33:41 +0530 Subject: [PATCH 011/127] Update concurrently to regular dependency --- package-lock.json | 126 ++++++++++++---------------------------------- package.json | 2 +- 2 files changed, 34 insertions(+), 94 deletions(-) diff --git a/package-lock.json b/package-lock.json index 933a31d4..a9c0d892 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2022,7 +2022,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -3222,8 +3221,7 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "camelcase-keys": { "version": "2.1.0", @@ -3286,7 +3284,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -3514,7 +3511,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, "requires": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", @@ -3524,20 +3520,17 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -3619,7 +3612,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -3627,8 +3619,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { "version": "1.5.3", @@ -3880,7 +3871,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.2.0.tgz", "integrity": "sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw==", - "dev": true, "requires": { "chalk": "^2.4.2", "date-fns": "^2.0.1", @@ -3897,7 +3887,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, "requires": { "normalize-package-data": "^2.3.2", "parse-json": "^4.0.0", @@ -3908,7 +3897,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -4809,8 +4797,7 @@ "date-fns": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.14.0.tgz", - "integrity": "sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw==", - "dev": true + "integrity": "sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw==" }, "debug": { "version": "4.1.1", @@ -4824,8 +4811,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "decode-uri-component": { "version": "0.2.0", @@ -5543,7 +5529,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -5592,8 +5577,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.14.2", @@ -6683,8 +6667,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-own-enumerable-property-symbols": { "version": "3.0.2", @@ -6934,8 +6917,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.1", @@ -7049,8 +7031,7 @@ "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" }, "hpack.js": { "version": "2.1.6", @@ -7627,8 +7608,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-binary-path": { "version": "2.1.0", @@ -8872,8 +8852,7 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-schema": { "version": "0.2.3", @@ -9076,8 +9055,7 @@ "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -10160,7 +10138,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, "requires": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -10742,7 +10719,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, "requires": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -10783,8 +10759,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", @@ -10807,8 +10782,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-to-regexp": { "version": "0.1.7", @@ -10852,8 +10826,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pinkie": { "version": "2.0.4", @@ -12544,14 +12517,12 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "require-relative": { "version": "0.8.7", @@ -12569,7 +12540,6 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -12751,7 +12721,6 @@ "version": "6.5.5", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", - "dev": true, "requires": { "tslib": "^1.9.0" } @@ -12925,8 +12894,7 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-diff": { "version": "3.1.1", @@ -13063,8 +13031,7 @@ "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 + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-value": { "version": "2.0.1", @@ -13510,14 +13477,12 @@ "spawn-command": { "version": "0.0.2-1", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", - "dev": true + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -13526,14 +13491,12 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -13542,8 +13505,7 @@ "spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, "spdy": { "version": "4.0.2", @@ -13940,7 +13902,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, "requires": { "ansi-regex": "^4.1.0" }, @@ -13948,8 +13909,7 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" } } }, @@ -14028,7 +13988,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -14590,8 +14549,7 @@ "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" }, "trim-newlines": { "version": "1.0.0", @@ -14617,8 +14575,7 @@ "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" }, "tsutils": { "version": "3.17.1", @@ -15091,7 +15048,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -15831,8 +15787,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "wide-align": { "version": "1.1.3", @@ -16110,7 +16065,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, "requires": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -16120,20 +16074,17 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -16209,8 +16160,7 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yallist": { "version": "4.0.0", @@ -16228,7 +16178,6 @@ "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, "requires": { "cliui": "^5.0.0", "find-up": "^3.0.0", @@ -16245,14 +16194,12 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -16260,14 +16207,12 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -16277,7 +16222,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "requires": { "p-try": "^2.0.0" } @@ -16286,7 +16230,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -16294,14 +16237,12 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -16314,7 +16255,6 @@ "version": "13.1.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/package.json b/package.json index b4ab6225..661be55f 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ ] }, "dependencies": { + "concurrently": "^5.2.0", "dotenv": "^8.2.0", "downloadjs": "^1.4.7", "express": "^4.17.1", @@ -32,7 +33,6 @@ "node": "10.x" }, "devDependencies": { - "concurrently": "^5.2.0", "dotenv-webpack": "^1.8.0", "enzyme": "^3.10.0", "enzyme-adapter-preact-pure": "^2.0.0", From 9cc8c134d7d1e6df3dc0ff4d2f5376b7fa2f680f Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 20:31:37 +0530 Subject: [PATCH 012/127] Remove .env file for env variables --- .env | 2 -- package-lock.json | 43 ++++++------------------------------------- package.json | 9 ++++----- preact.config.js | 9 +++++++-- server/index.js | 2 +- 5 files changed, 18 insertions(+), 47 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index 80fb52aa..00000000 --- a/.env +++ /dev/null @@ -1,2 +0,0 @@ -SERVER_PORT=3030 -WS_HOST=ws://localhost:3030 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a9c0d892..a06dbabe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5180,37 +5180,6 @@ "is-obj": "^2.0.0" } }, - "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" - }, - "dotenv-defaults": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz", - "integrity": "sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q==", - "dev": true, - "requires": { - "dotenv": "^6.2.0" - }, - "dependencies": { - "dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", - "dev": true - } - } - }, - "dotenv-webpack": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz", - "integrity": "sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg==", - "dev": true, - "requires": { - "dotenv-defaults": "^1.0.2" - } - }, "downloadjs": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/downloadjs/-/downloadjs-1.4.7.tgz", @@ -5342,9 +5311,9 @@ "dev": true }, "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -5391,9 +5360,9 @@ } }, "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz", + "integrity": "sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==", "dev": true, "requires": { "graceful-fs": "^4.1.2", diff --git a/package.json b/package.json index 661be55f..d3547138 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "private": true, "scripts": { "server": "node server/index", - "dev": "concurrently \"npm:server\" \"preact watch\"", - "build": "preact build", + "dev": "concurrently \"npm:server\" \"WS_HOST=ws://localhost:3030 preact watch\"", + "build": "WS_HOST=ws://localhost:3030 preact build", "start": "concurrently \"npm:server\" \"sirv build --cors --single --port 8080 \"", "lint": "eslint src" }, @@ -20,7 +20,6 @@ }, "dependencies": { "concurrently": "^5.2.0", - "dotenv": "^8.2.0", "downloadjs": "^1.4.7", "express": "^4.17.1", "preact": "^10.3.2", @@ -33,7 +32,6 @@ "node": "10.x" }, "devDependencies": { - "dotenv-webpack": "^1.8.0", "enzyme": "^3.10.0", "enzyme-adapter-preact-pure": "^2.0.0", "eslint": "^6.0.1", @@ -45,6 +43,7 @@ "preact-cli": "^3.0.0-rc.6", "preact-render-spy": "^1.2.1", "sass-loader": "^8.0.2", - "sirv-cli": "^0.4.5" + "sirv-cli": "^0.4.5", + "webpack": "^4.43.0" } } diff --git a/preact.config.js b/preact.config.js index 947412e5..dd594d0c 100644 --- a/preact.config.js +++ b/preact.config.js @@ -1,4 +1,4 @@ -const Dotenv = require('dotenv-webpack'); +const { DefinePlugin } = require('webpack'); module.exports = function (config, env, helpers) { // disable css modules @@ -6,7 +6,12 @@ module.exports = function (config, env, helpers) { let css = helpers.getLoadersByName(config, 'css-loader')[0]; css.loader.options.modules = false; - config.plugins.push(new Dotenv()); + const envKeys = Object.keys(process.env).reduce((prev, next) => { + prev[`process.env.${next}`] = JSON.stringify(process.env[next]); + return prev; + }, {}); + + config.plugins.push(new DefinePlugin(envKeys)); return config; } \ No newline at end of file diff --git a/server/index.js b/server/index.js index 6538d845..89895829 100644 --- a/server/index.js +++ b/server/index.js @@ -129,7 +129,7 @@ wss.on('connection', (ws) => { }); }); -const port = process.env.SERVER_PORT ? process.env.SERVER_PORT : 3030; +const port = process.env.PORT ? process.env.PORT : 3030; server.listen(port, '0.0.0.0', () => { log('listening on *:'+port); }); \ No newline at end of file From 30a80ba4923a85d88679458f43b6870bb5829ed6 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 20:39:45 +0530 Subject: [PATCH 013/127] Add mobile menu toggle --- src/components/Header/index.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/components/Header/index.js b/src/components/Header/index.js index 7cd081cf..03c1aad6 100644 --- a/src/components/Header/index.js +++ b/src/components/Header/index.js @@ -1,12 +1,19 @@ import { h } from 'preact'; +import { useState } from 'preact/hooks'; import './styles.scss'; function Header() { + const [isMenuOpen, setMenuOpen] = useState(false); + + const toggleMenu = () => { + setMenuOpen(!isMenuOpen); + }; + return (
diff --git a/src/routes/App/Rooms/index.js b/src/routes/App/Rooms/index.js index 012abaf7..b2593157 100644 --- a/src/routes/App/Rooms/index.js +++ b/src/routes/App/Rooms/index.js @@ -1,4 +1,4 @@ -import { h, Component } from 'preact'; +import { h } from 'preact'; import { route } from 'preact-router'; import { useState, useEffect } from 'preact/hooks'; diff --git a/src/routes/App/index.js b/src/routes/App/index.js index 4de4b405..2421d0c2 100644 --- a/src/routes/App/index.js +++ b/src/routes/App/index.js @@ -12,25 +12,27 @@ export default function App() { const [isRegistered, setRegistered] = useState(!!window.localStorage.getItem('blaze')); const [isLoaded, setLoaded] = useState(false); - if (!isRegistered) { - return ( -
- setRegistered(true)} /> -
- ); - } - useEffect(() => { document.title = 'App | Blaze'; + if (!isRegistered) return; + const scriptjs = require('scriptjs'); scriptjs([ 'https://unpkg.com/canvas-elements/build/cdn/canvas-elements.min.js', 'https://cdn.jsdelivr.net/npm/webtorrent@latest/webtorrent.min.js' - ], function() { + ], () => { setLoaded(true); }); - }, []); + }, [isRegistered]); + + if (!isRegistered) { + return ( +
+ setRegistered(true)} /> +
+ ); + } return (
diff --git a/src/utils/fileShare.js b/src/utils/fileShare.js index b58a1b36..8e12d65a 100644 --- a/src/utils/fileShare.js +++ b/src/utils/fileShare.js @@ -6,7 +6,7 @@ const trackers = { class FileShare { - constructor(socket, torrentOpts) { + constructor(socket) { this.socket = socket; this.torrentClient = new WebTorrent({ tracker: { @@ -14,7 +14,7 @@ class FileShare { rtcConfig: { iceServers: [ { - 'urls': ['stun:stun.l.google.com:19305', 'stun:stun1.l.google.com:19305'] + urls: ['stun:stun.l.google.com:19305', 'stun:stun1.l.google.com:19305'] } ] } @@ -46,7 +46,7 @@ class FileShare { if (data.end) { // TODO: build the file if (fileParts.length) { - callbacks.done(new Blob(fileParts)); + onDone(new Blob(fileParts)); fileParts = []; size = 0; statProg = 0.25; @@ -54,7 +54,7 @@ class FileShare { } else { metaData = data; - callbacks.meta(data); + onMeta(data); } }); @@ -64,7 +64,7 @@ class FileShare { const progress = size / metaData.size; - callbacks.progress({ progress }); + onProgress({ progress }); if (progress >= statProg) { statProg += 0.15; @@ -122,7 +122,7 @@ class FileShare { meta, }); - return new Promise((resolve, reject) => { + return new Promise((resolve) => { const stream = async () => { const { done, value } = await reader.read(); diff --git a/src/utils/visualizer.js b/src/utils/visualizer.js index ea9bdd30..69327522 100644 --- a/src/utils/visualizer.js +++ b/src/utils/visualizer.js @@ -19,8 +19,8 @@ class Visualizer { this.canvas.width = width * dpr; this.canvas.height = height * dpr; - this.canvas.style.width = width + 'px'; - this.canvas.style.height = height + 'px'; + this.canvas.style.width = `${width}px`; + this.canvas.style.height = `${height}px`; this.ctx = this.canvas.getContext('2d'); this.ctx.scale(dpr, dpr); @@ -78,11 +78,11 @@ class Visualizer { const nodeData = { name, + peerId, radius: 30, cx: pos ? pos[0] : undefined, cy: pos ? pos[1] : undefined, textColor: isClient ? '#C5C7CC' : '#636979', - peerId: peerId, }; const nodeDuplID = this.nodes.findIndex(node => node.name === name); @@ -286,11 +286,6 @@ class Visualizer { setTransferPercentage(percentage) { if (percentage > 100) percentage = 100; } - - sending(isSending) { - - } - } From 68f063dd3c9ddbc74d5708ce4f97ec68d3a92979 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 20:58:17 +0530 Subject: [PATCH 015/127] Add utils and server to eslint --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d3547138..28d15175 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "dev": "concurrently \"npm:server\" \"WS_HOST=ws://localhost:3030 preact watch\"", "build": "WS_HOST=ws://localhost:3030 preact build", "start": "concurrently \"npm:server\" \"sirv build --cors --single --port 8080 \"", - "lint": "eslint src" + "lint": "eslint src utils server" }, "author": "Akash Hamirwasia", "license": "MIT", From 9563f0d872b8dd6efc21a3f671b33cfbcf5e3015 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 20:58:35 +0530 Subject: [PATCH 016/127] Fix eslint errors --- server/index.js | 4 ++-- utils/socket.js | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/server/index.js b/server/index.js index 89895829..de7cdbee 100644 --- a/server/index.js +++ b/server/index.js @@ -47,7 +47,7 @@ class Room { } get senderSocket() { - if (!this.sender) return; + if (!this.sender) return undefined; return this.sockets.find(socket => socket.name === this.sender); } @@ -131,5 +131,5 @@ wss.on('connection', (ws) => { const port = process.env.PORT ? process.env.PORT : 3030; server.listen(port, '0.0.0.0', () => { - log('listening on *:'+port); + log(`listening on *:${port}`); }); \ No newline at end of file diff --git a/utils/socket.js b/utils/socket.js index 042f23b6..7070156d 100644 --- a/utils/socket.js +++ b/utils/socket.js @@ -41,10 +41,7 @@ class Socket { this.socket.send(data); } else { - this.socket.send(JSON.stringify({ - event: event, - data: data, - })); + this.socket.send(JSON.stringify({ event, data })); } } From 2b86ef302e2bfc5665c7093b541a219717860072 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 21 Jun 2020 21:26:47 +0530 Subject: [PATCH 017/127] Update visualizer to dynamic dimensions --- src/routes/App/FileTransfer/index.js | 2 +- src/utils/visualizer.js | 51 +++++++++++++++++----------- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/routes/App/FileTransfer/index.js b/src/routes/App/FileTransfer/index.js index edcba4c2..fda55e07 100644 --- a/src/routes/App/FileTransfer/index.js +++ b/src/routes/App/FileTransfer/index.js @@ -149,7 +149,7 @@ class FileTransfer extends Component { } componentDidMount() { - this.visualizer = new Visualizer(Math.floor(window.innerWidth / 2), Math.floor(window.innerHeight / 2), this.canvas.current); + this.visualizer = new Visualizer(this.canvas.current); this.fileShare = new SocketConnect(this.client.room, this.client.name); this.visualizer.addNode({ diff --git a/src/utils/visualizer.js b/src/utils/visualizer.js index 69327522..cb549a15 100644 --- a/src/utils/visualizer.js +++ b/src/utils/visualizer.js @@ -1,12 +1,36 @@ class Visualizer { - constructor(width, height, canvas) { + constructor(canvas) { + this.canvas = canvas; + this.ctx = this.canvas.getContext('2d'); + this.updateCanvasSize(); + window.addEventListener('resize', this.updateCanvasSize.bind(this)); + + this.nodes = []; + this.sentTo = []; + this.receivedBy = []; + this.state = { + start: 0, + end: 0, + }; + + this.draw(); + } + + updateCanvasSize() { const dpr = window.devicePixelRatio || 1; - this.canvas = canvas; - this.width = width; - this.height = height; + this.height = Math.floor(window.innerHeight / 2); + this.canvas.style.height = `${this.height}px`; + + if (window.innerWidth <= 800) { + this.width = window.innerWidth - 32; + } else { + this.width = Math.floor(window.innerWidth / 2); + } + + this.canvas.style.width = `${this.width}px`; /** * Canvas resolution correction based on the device pixel-ratio. @@ -16,26 +40,13 @@ class Visualizer { * * In the end, we get a sharper canvas with same size elements */ - this.canvas.width = width * dpr; - this.canvas.height = height * dpr; + this.canvas.width = this.width * dpr; + this.canvas.height = this.height * dpr; - this.canvas.style.width = `${width}px`; - this.canvas.style.height = `${height}px`; - this.ctx = this.canvas.getContext('2d'); this.ctx.scale(dpr, dpr); - this.ctx.translate(width * 0.5, height * 0.5); - - this.nodes = []; - this.sentTo = []; - this.receivedBy = []; - this.state = { - start: 0, - end: 0, - }; - - this.draw(); + this.ctx.translate(this.width * 0.5, this.height * 0.5); } /** From b350b0962c181b1d478abbd2ce1d8b79807beb26 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 26 Jun 2020 16:13:47 +0530 Subject: [PATCH 018/127] Add sucrase and cors as dependencies --- package-lock.json | 98 +++++++++++++++++++++++++++++++++++------------ package.json | 4 +- 2 files changed, 77 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index a06dbabe..0e69c756 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2026,6 +2026,11 @@ "color-convert": "^1.9.0" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -2594,8 +2599,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", @@ -2866,7 +2870,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3820,8 +3823,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.2", @@ -4206,6 +4208,15 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "cosmiconfig": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", @@ -6510,8 +6521,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "1.2.13", @@ -6694,7 +6704,6 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7395,7 +7404,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -7404,8 +7412,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -8973,8 +8980,7 @@ "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "load-json-file": { "version": "4.0.0", @@ -9561,7 +9567,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -9737,6 +9742,16 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "nan": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", @@ -9947,8 +9962,7 @@ "node-modules-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" }, "node-notifier": { "version": "5.4.3", @@ -10192,8 +10206,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", @@ -10347,7 +10360,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -10733,8 +10745,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -10816,7 +10827,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, "requires": { "node-modules-regexp": "^1.0.0" } @@ -13953,6 +13963,26 @@ } } }, + "sucrase": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.15.0.tgz", + "integrity": "sha512-05TJOUfMgckH7wKqfk/1p4G6q16nIeW/GHQwD44vkT0mQMqqzgfHCwkX3whNmwyOo7nVF0jDLwVu/qOBTtsscw==", + "requires": { + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + } + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -14329,6 +14359,22 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", @@ -14541,6 +14587,11 @@ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", "dev": true }, + "ts-interface-checker": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.11.tgz", + "integrity": "sha512-Jx6cFBiuCQrRl3CgoIOamIE/toZ8jQJbIlsLGpkBiUpCEUyFcyZ2pvjP8kSXIcz8V5v/murgm/5EfIQapUmh6A==" + }, "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", @@ -16065,8 +16116,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { "version": "1.0.3", diff --git a/package.json b/package.json index 28d15175..32b2531b 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Quickly share files with multiple users", "private": true, "scripts": { - "server": "node server/index", + "server": "sucrase-node server/index", "dev": "concurrently \"npm:server\" \"WS_HOST=ws://localhost:3030 preact watch\"", "build": "WS_HOST=ws://localhost:3030 preact build", "start": "concurrently \"npm:server\" \"sirv build --cors --single --port 8080 \"", @@ -20,12 +20,14 @@ }, "dependencies": { "concurrently": "^5.2.0", + "cors": "^2.8.5", "downloadjs": "^1.4.7", "express": "^4.17.1", "preact": "^10.3.2", "preact-render-to-string": "^5.1.4", "preact-router": "^3.2.1", "scriptjs": "^2.5.9", + "sucrase": "^3.15.0", "ws": "^7.3.0" }, "engines": { From 576262bcb07873714a2c4cce46129c5ff127349a Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 26 Jun 2020 16:14:26 +0530 Subject: [PATCH 019/127] Update to import syntax --- constants.js | 2 +- server/index.js | 72 ++++++++++++---------------------------- server/log.js | 2 +- src/routes/Home/index.js | 8 ++--- utils/room.js | 39 ++++++++++++++++++++++ utils/socket.js | 2 +- 6 files changed, 68 insertions(+), 57 deletions(-) create mode 100644 utils/room.js diff --git a/constants.js b/constants.js index 1a0a71fa..fdc43232 100644 --- a/constants.js +++ b/constants.js @@ -1,4 +1,4 @@ -module.exports = { +export default { CHUNK: 'chunk', JOIN: 'join', USER_JOIN: 'user-join', diff --git a/server/index.js b/server/index.js index de7cdbee..7549e214 100644 --- a/server/index.js +++ b/server/index.js @@ -1,59 +1,23 @@ -const express = require('express'); -const http = require('http'); -const WebSocket = require('ws'); -const Socket = require('../utils/socket'); -const log = require('./log'); -const constants = require('../constants'); +import express from 'express'; +import http from 'http'; +import WebSocket from 'ws'; +import cors from 'cors'; +import Socket from '../utils/socket'; +import Room from '../utils/room'; +import log from './log'; +import constants from '../constants'; const app = express(); +app.use(express.json()); +app.use(cors({ + origin: process.env.ORIGIN || '*', +})); + const server = http.createServer(app); const wss = new WebSocket.Server({ server }); const rooms = {}; -if (process.env.NODE_ENV === 'production') { - require('dotenv').config(); -} - -class Room { - constructor(name) { - this.sockets = []; - this.sender = null; - this.name = name; - } - - addSocket(socket) { - this.sockets.push(socket); - } - - removeSocket(socket) { - this.sockets = this.sockets.filter(client => client.name !== socket.name); - } - - broadcast(event, message, ignore) { - this.sockets.forEach(client => { - if (ignore && ignore.includes(client.name)) return; - - client.send(event, message); - }); - } - - get socketsData() { - return this.sockets.map(({ name, peerId }) => ({ name, peerId })); - } - - getSocketFromName(name) { - return this.sockets.find(socket => socket.name === name); - } - - get senderSocket() { - if (!this.sender) return undefined; - - return this.sockets.find(socket => socket.name === this.sender); - } -} - - wss.on('connection', (ws) => { const socket = new Socket(ws); let room; @@ -129,7 +93,15 @@ wss.on('connection', (ws) => { }); }); -const port = process.env.PORT ? process.env.PORT : 3030; +app.get('/', (req, res) => { + res.send({ + message: 'Blaze WebSockets running', + rooms: Object.keys(rooms).length, + peers: Object.values(rooms).reduce((sum, room) => sum + room.sockets.length, 0), + }); +}); + +const port = process.env.PORT || 3030; server.listen(port, '0.0.0.0', () => { log(`listening on *:${port}`); }); \ No newline at end of file diff --git a/server/log.js b/server/log.js index 7f086be4..b7ddee92 100644 --- a/server/log.js +++ b/server/log.js @@ -9,4 +9,4 @@ function log(message) { console.log(`[${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}] ${message}`); } -module.exports = log; \ No newline at end of file +export default log; \ No newline at end of file diff --git a/src/routes/Home/index.js b/src/routes/Home/index.js index 90d7f38c..4daea084 100644 --- a/src/routes/Home/index.js +++ b/src/routes/Home/index.js @@ -24,9 +24,9 @@ const Home = () => ( Devices connected using Blaze - {/* + - */} + @@ -63,7 +63,7 @@ const Home = () => ( "I built Blaze because I wanted a fast, radically different way to transfer files between my laptop and mobile"
- + Akash Hamirwasia Akash Hamirwasia @@ -85,7 +85,7 @@ const Home = () => ( diff --git a/utils/room.js b/utils/room.js new file mode 100644 index 00000000..bde445fa --- /dev/null +++ b/utils/room.js @@ -0,0 +1,39 @@ +class Room { + constructor(name) { + this.sockets = []; + this.sender = null; + this.name = name; + } + + addSocket(socket) { + this.sockets.push(socket); + } + + removeSocket(socket) { + this.sockets = this.sockets.filter(client => client.name !== socket.name); + } + + broadcast(event, message, ignore) { + this.sockets.forEach(client => { + if (ignore && ignore.includes(client.name)) return; + + client.send(event, message); + }); + } + + get socketsData() { + return this.sockets.map(({ name, peerId }) => ({ name, peerId })); + } + + getSocketFromName(name) { + return this.sockets.find(socket => socket.name === name); + } + + get senderSocket() { + if (!this.sender) return undefined; + + return this.sockets.find(socket => socket.name === this.sender); + } +} + +export default Room; \ No newline at end of file diff --git a/utils/socket.js b/utils/socket.js index 7070156d..d594f284 100644 --- a/utils/socket.js +++ b/utils/socket.js @@ -54,4 +54,4 @@ class Socket { } } -module.exports = Socket; \ No newline at end of file +export default Socket; \ No newline at end of file From 3255e15a61bcf99bd6cf56f98df98ea98e095f35 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 27 Jun 2020 13:25:53 +0530 Subject: [PATCH 020/127] Refactor file structure --- src/index.js | 33 +++---- src/routes/Home/index.js | 95 ------------------- src/routes/Pages/Home/Home.js | 92 ++++++++++++++++++ .../{Home/index.scss => Pages/Home/Home.scss} | 11 +-- src/routes/Pages/Pages.js | 19 ++++ src/routes/Pages/Pages.scss | 14 +++ .../Pages/components/Header/Header.js} | 7 +- .../Pages/components/Header/Header.scss} | 2 +- 8 files changed, 142 insertions(+), 131 deletions(-) delete mode 100644 src/routes/Home/index.js create mode 100644 src/routes/Pages/Home/Home.js rename src/routes/{Home/index.scss => Pages/Home/Home.scss} (89%) create mode 100644 src/routes/Pages/Pages.js create mode 100644 src/routes/Pages/Pages.scss rename src/{components/Header/index.js => routes/Pages/components/Header/Header.js} (98%) rename src/{components/Header/styles.scss => routes/Pages/components/Header/Header.scss} (98%) diff --git a/src/index.js b/src/index.js index 50875942..7d4681ac 100644 --- a/src/index.js +++ b/src/index.js @@ -1,28 +1,19 @@ -import { h, Component } from 'preact'; +import { h } from 'preact'; import { Router, Route } from 'preact-router'; -// Code-splitting is automated for routes -import Home from './routes/Home'; +import Pages from './routes/Pages/Pages'; import App from './routes/App'; -export default class Blaze extends Component { +import './global.scss'; - /** Gets fired when the route changes. - * @param {Object} event "change" event from [preact-router](http://git.io/preact-router) - * @param {string} event.url The newly routed URL - */ - handleRoute = e => { - this.currentUrl = e.url; - }; +export default function Blaze() { - render() { - return ( -
- - - - -
- ); - } + return ( +
+ + + + +
+ ); } \ No newline at end of file diff --git a/src/routes/Home/index.js b/src/routes/Home/index.js deleted file mode 100644 index 4daea084..00000000 --- a/src/routes/Home/index.js +++ /dev/null @@ -1,95 +0,0 @@ -import { h } from 'preact'; -import Header from '../../components/Header'; -import network from '../../assets/images/illustrations/network_compress.png'; -import twoDevices from '../../assets/images/illustrations/two_devices_compress.png'; -import threeDevices from '../../assets/images/illustrations/three_devices_compress.png'; -import world from '../../assets/images/illustrations/world_compressed.png'; -import './index.scss'; - -const Home = () => ( -
-
-
-
- -
-

Share files the modern way

-

Using just a web browser across any device on Earth!

- - - Start Sharing - - Blaze - Fast peer to peer file sharing web app ⚡ | Product Hunt Embed -
- - Devices connected using Blaze - - - - - -
- - -
-
- Laptop and mobile connected together -

Easy to use

-

- Blaze is a web app, just open it in your browser, join a room, and start sharing. No need to download specific apps for different platforms. -

-
- -
- Laptop and two mobiles connected together -

Multi-device Experimental

-

- Traditionally, sharing files to multiple devices has been a hassle. With Blaze, you can share files across multiple devices with ease. -

-
- -
- Devices in different parts of the world using Blaze to share files -

Anywhere

-

- Blaze is built on modern web technologies, allowing it to work on devices far away from each other. It just needs to be connected to the internet. -

-
-
- -
- -
- "I built Blaze because I wanted a fast, radically different way to transfer files between my laptop and mobile" - -
- - Akash Hamirwasia - - Akash Hamirwasia - Creator of Blaze -
-
- -
- -
- -

Let's get sharing!

-

No registrations required, completely free

- - - Start sharing - - -
- - - -
-
-); - -export default Home; diff --git a/src/routes/Pages/Home/Home.js b/src/routes/Pages/Home/Home.js new file mode 100644 index 00000000..80519102 --- /dev/null +++ b/src/routes/Pages/Home/Home.js @@ -0,0 +1,92 @@ +import { h } from 'preact'; +import network from '../../../assets/images/illustrations/network_compress.png'; +import twoDevices from '../../../assets/images/illustrations/two_devices_compress.png'; +import threeDevices from '../../../assets/images/illustrations/three_devices_compress.png'; +import world from '../../../assets/images/illustrations/world_compressed.png'; +import Pill from '../../../components/Pill/Pill'; +import './Home.scss'; + +const Home = () => ( +
+
+ +
+

Share files the modern way

+

Using just a web browser across any device on Earth!

+ + + Start Sharing + + Blaze - Fast peer to peer file sharing web app ⚡ | Product Hunt Embed +
+ + Devices connected using Blaze + + + + + +
+ + +
+
+ Laptop and mobile connected together +

Easy to use

+

+ Blaze is a web app, just open it in your browser, join a room, and start sharing. No need to download specific apps for different platforms. +

+
+ +
+ Laptop and two mobiles connected together +

Multi-device Experimental

+

+ Traditionally, sharing files to multiple devices has been a hassle. With Blaze, you can share files across multiple devices with ease. +

+
+ +
+ Devices in different parts of the world using Blaze to share files +

Anywhere

+

+ Blaze is built on modern web technologies, allowing it to work on devices far away from each other. It just needs to be connected to the internet. +

+
+
+ +
+ +
+ "I built Blaze because I wanted a fast, radically different way to transfer files between my laptop and mobile" + +
+ + Akash Hamirwasia + + Akash Hamirwasia + Creator of Blaze +
+
+ +
+ +
+ +

Let's get sharing!

+

No registrations required, completely free

+ + + Start sharing + + +
+ + + +
+); + +export default Home; diff --git a/src/routes/Home/index.scss b/src/routes/Pages/Home/Home.scss similarity index 89% rename from src/routes/Home/index.scss rename to src/routes/Pages/Home/Home.scss index 1c7823d0..49d97430 100644 --- a/src/routes/Home/index.scss +++ b/src/routes/Pages/Home/Home.scss @@ -1,15 +1,10 @@ -@import '../../scss/base/index'; +@import '../../../scss/variables'; html { // TODO: Remove this overflow-x: hidden; } -.page-container { - padding: 0 30px; - overflow-x: hidden; -} - .hero { display: flex; align-items: center; @@ -177,10 +172,6 @@ svg.waves { @media screen and (min-width: 800px) { - .page-container { - padding: 0 60px; - } - .hero { height: 100vh; flex-direction: row; diff --git a/src/routes/Pages/Pages.js b/src/routes/Pages/Pages.js new file mode 100644 index 00000000..030da8f8 --- /dev/null +++ b/src/routes/Pages/Pages.js @@ -0,0 +1,19 @@ +import { h } from 'preact'; +import { Router } from 'preact-router'; + +import Header from './components/Header/Header'; +import Home from './Home/Home'; + +import './Pages.scss'; + +export default function Pages() { + + return ( +
+
+ + + +
+ ); +} diff --git a/src/routes/Pages/Pages.scss b/src/routes/Pages/Pages.scss new file mode 100644 index 00000000..b1300fc1 --- /dev/null +++ b/src/routes/Pages/Pages.scss @@ -0,0 +1,14 @@ +@import '../../scss/variables'; + +.page-container { + padding: 0 30px; + overflow-x: hidden; +} + + +@media screen and (min-width: $tablet) { + + .page-container { + padding: 0 60px; + } +} \ No newline at end of file diff --git a/src/components/Header/index.js b/src/routes/Pages/components/Header/Header.js similarity index 98% rename from src/components/Header/index.js rename to src/routes/Pages/components/Header/Header.js index 03c1aad6..d3bf41c9 100644 --- a/src/components/Header/index.js +++ b/src/routes/Pages/components/Header/Header.js @@ -1,6 +1,7 @@ import { h } from 'preact'; import { useState } from 'preact/hooks'; -import './styles.scss'; +import Pill from '../../../../components/Pill/Pill'; +import './Header.scss'; function Header() { const [isMenuOpen, setMenuOpen] = useState(false); @@ -15,9 +16,7 @@ function Header() { - - Beta - + Beta ); diff --git a/src/components/Fab/Fab.scss b/src/components/Fab/Fab.scss index cdaa0c7e..eb976460 100644 --- a/src/components/Fab/Fab.scss +++ b/src/components/Fab/Fab.scss @@ -44,7 +44,7 @@ button.fab { .lg-text { display: block; font-size: 1.2rem; - margin-right: 5px; + margin: 0 5px; } } } \ No newline at end of file diff --git a/src/components/Modal/Modal.js b/src/components/Modal/Modal.js index 0d5ec45c..3d353c48 100644 --- a/src/components/Modal/Modal.js +++ b/src/components/Modal/Modal.js @@ -1,6 +1,7 @@ import { h } from 'preact'; import { createPortal } from 'preact/compat'; import { useEffect } from 'preact/hooks'; +import { XCircle } from 'preact-feather'; import './Modal.scss'; @@ -16,11 +17,13 @@ function Modal({ isClosable, isOpen, onClose, children }) { { isClosable && ( ) } diff --git a/src/components/Modal/Modal.scss b/src/components/Modal/Modal.scss index 675d3d25..48264262 100644 --- a/src/components/Modal/Modal.scss +++ b/src/components/Modal/Modal.scss @@ -20,7 +20,7 @@ box-shadow: 0 8px 60px rgba(0, 0, 0, 0.4); } - .icon-cancel { + button.close { position: absolute; top: 15px; right: 15px; diff --git a/src/global.scss b/src/global.scss index 8a6869c0..ed37c942 100644 --- a/src/global.scss +++ b/src/global.scss @@ -1,5 +1,4 @@ @import './scss/variables'; -@import './scss/fonts'; * { box-sizing: border-box; @@ -44,8 +43,9 @@ button, .btn { border-radius: 4px; font-weight: $font-bold; font-size: 1.4rem; - display: inline-block; - z-index: 1; + display: inline-flex; + align-items: center; + justify-content: center; height: 50px; line-height: 50px; @@ -88,6 +88,7 @@ button, .btn { &.icon { width: 50px; font-size: 2rem; + transform: none; } } diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index f364f3bb..d225c056 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -2,6 +2,8 @@ import { h, createRef } from 'preact'; import download from 'downloadjs'; import { route } from 'preact-router'; import { PureComponent } from 'preact/compat'; +import { ArrowLeft, CheckCircle, Plus } from 'preact-feather'; + import Fab from '../../../components/Fab/Fab'; import Modal from '../../../components/Modal/Modal'; import FileDrop from '../../../components/FileDrop/FileDrop'; @@ -37,6 +39,7 @@ class FileTransfer extends PureComponent { }; this.canvas = createRef(); + this.fileInput = createRef(); /** * Add the current room in recent rooms list @@ -97,7 +100,7 @@ class FileTransfer extends PureComponent { }); // Remove the file from the input - document.getElementById('inpFiles').value = ''; + this.fileInput.current.value = ''; } selectFiles(inputFiles) { @@ -148,6 +151,7 @@ class FileTransfer extends PureComponent { files: this.state.files.map(file => ({ ...file, sent: true })), }); this.visualizer.stopSharing(); + this.resetState(); }, }); } @@ -238,10 +242,12 @@ class FileTransfer extends PureComponent {

{room} @@ -275,7 +281,7 @@ class FileTransfer extends PureComponent { this.selectFiles(e.target.files)} @@ -299,9 +305,12 @@ class FileTransfer extends PureComponent {

{ - file.sent ?
- : ( - + file.sent ? ( +
+ +
+ ) : ( + ) @@ -315,13 +324,8 @@ class FileTransfer extends PureComponent { ) } - document.getElementById('inpFiles').click()} - > - Add File + this.fileInput.current.click()}> + diff --git a/src/routes/App/FileTransfer/FileTransfer.scss b/src/routes/App/FileTransfer/FileTransfer.scss index 6b607cc3..21168e28 100644 --- a/src/routes/App/FileTransfer/FileTransfer.scss +++ b/src/routes/App/FileTransfer/FileTransfer.scss @@ -27,9 +27,9 @@ } button { - height: auto; &.left { + margin-top: -15px; margin-right: auto; text-align: left; } @@ -115,7 +115,7 @@ } } - svg.file-status { + .file-progress { transform: rotateZ(-90deg) scaleY(-1); margin-left: auto; @@ -127,16 +127,11 @@ } } - div.file-status { + .file-complete { width: 22px; height: 22px; - border-radius: 100%; - margin: 15px; - background-color: $primary; - color: #0B101C; - line-height: 1.6em; - font-size: 0.9rem; - margin-left: auto; + margin: 15px 15px 19px auto; + color: $primary; } } diff --git a/src/routes/App/Rooms/Rooms.js b/src/routes/App/Rooms/Rooms.js index 9a84b6f1..fb64362c 100644 --- a/src/routes/App/Rooms/Rooms.js +++ b/src/routes/App/Rooms/Rooms.js @@ -1,6 +1,7 @@ import { h } from 'preact'; import { route } from 'preact-router'; import { useState, useEffect } from 'preact/hooks'; +import { Plus, X } from 'preact-feather'; import Fab from '../../../components/Fab/Fab'; import Modal from '../../../components/Modal/Modal'; @@ -86,30 +87,28 @@ function Rooms() {
  • route(`/app/t/${room}`)}>
    {room}
  • )) } - setModal(true)}> - New Room + setModal(true)}> + ) :
    Connect to the internet to start sharing files
    } - setModal(false)} - /> + setModal(false)} />
    ); } diff --git a/src/routes/App/Rooms/Rooms.scss b/src/routes/App/Rooms/Rooms.scss index 7131fb80..1ce26774 100644 --- a/src/routes/App/Rooms/Rooms.scss +++ b/src/routes/App/Rooms/Rooms.scss @@ -34,7 +34,7 @@ border: 2px solid darken($primary, 25); } - .icon-cancel { + button.remove-room { margin-left: auto; margin-right: -16px; height: auto; @@ -88,7 +88,7 @@ margin-top: 2rem; } - .icon-cancel { + button.remove-room { margin: 0 -15px 0 auto; order: 1; } diff --git a/src/routes/Pages/components/Header/Header.js b/src/routes/Pages/components/Header/Header.js index d3bf41c9..35440104 100644 --- a/src/routes/Pages/components/Header/Header.js +++ b/src/routes/Pages/components/Header/Header.js @@ -1,5 +1,7 @@ import { h } from 'preact'; import { useState } from 'preact/hooks'; +import { Menu, X } from 'preact-feather'; + import Pill from '../../../../components/Pill/Pill'; import './Header.scss'; @@ -19,11 +21,9 @@ function Header() { Beta -
    - this.selectFiles(files)} /> + { this.isSelectorEnabled && this.selectFiles(files)} /> }
    ); } From 13dd157981d59a72f68d9d46c2ef3f4a7cc59fa8 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 27 Jun 2020 20:46:19 +0530 Subject: [PATCH 035/127] Update file drop effect --- src/components/FileDrop/FileDrop.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/FileDrop/FileDrop.js b/src/components/FileDrop/FileDrop.js index 44eb68f9..3ee769ef 100644 --- a/src/components/FileDrop/FileDrop.js +++ b/src/components/FileDrop/FileDrop.js @@ -14,6 +14,17 @@ function FileDrop({ onFile, ...props }) { useEffect(() => { const onDragOver = handleDrag('solid'); const onDragLeave = handleDrag('none'); + const dropHandler = e => { + e.preventDefault(); + + const files = e.dataTransfer.files; + setBorder('none'); + + if (files != null) { + onFile(files); + } + } + window.addEventListener('dragover', onDragOver); window.addEventListener('dragleave', onDragLeave); window.addEventListener('drop', dropHandler); @@ -23,18 +34,7 @@ function FileDrop({ onFile, ...props }) { window.removeEventListener('dragleave', onDragLeave); window.removeEventListener('drop', dropHandler); }; - }, []); - - const dropHandler = e => { - e.preventDefault(); - - const files = e.dataTransfer.files; - setBorder('none'); - - if (files != null) { - onFile(files); - } - } + }); return (
    From 9a8a320610428fe9d0d271cd00e879da5864b5f9 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 27 Jun 2020 22:02:58 +0530 Subject: [PATCH 036/127] Fix icon size on mobiles --- src/components/Fab/Fab.scss | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/components/Fab/Fab.scss b/src/components/Fab/Fab.scss index 515fbc96..d01ca104 100644 --- a/src/components/Fab/Fab.scss +++ b/src/components/Fab/Fab.scss @@ -7,11 +7,9 @@ button.fab { position: fixed; bottom: 30px; right: 30px; - font-size: 3rem; - display: flex; - align-items: center; - justify-content: center; font-size: 2.3rem; + padding: 0; + &:disabled { background-color: $secondary; opacity: 0.5; @@ -20,6 +18,11 @@ button.fab { box-shadow: none; } + svg { + width: 32px; + height: 32px; + } + .lg-text { display: none; } @@ -46,5 +49,10 @@ button.fab { font-size: 1.25rem; margin: 0 5px; } + + svg { + width: auto; + height: auto; + } } } \ No newline at end of file From 0ec275ef92be7183b731f023eb66f015573a39f2 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 27 Jun 2020 22:05:39 +0530 Subject: [PATCH 037/127] Update rooms layout to use css grid --- src/routes/App/Rooms/Rooms.js | 66 +++++++++++++++++---------------- src/routes/App/Rooms/Rooms.scss | 40 ++++++++------------ 2 files changed, 49 insertions(+), 57 deletions(-) diff --git a/src/routes/App/Rooms/Rooms.js b/src/routes/App/Rooms/Rooms.js index fb64362c..9f8c12f9 100644 --- a/src/routes/App/Rooms/Rooms.js +++ b/src/routes/App/Rooms/Rooms.js @@ -1,6 +1,6 @@ import { h } from 'preact'; import { route } from 'preact-router'; -import { useState, useEffect } from 'preact/hooks'; +import { useState } from 'preact/hooks'; import { Plus, X } from 'preact-feather'; import Fab from '../../../components/Fab/Fab'; @@ -38,16 +38,11 @@ function NewRoomModal({ onNewRoom, ...props }) { } -function Rooms() { +function Rooms({ isOnline }) { const [isModalOpen, setModal] = useState(false); - const [isOnline, setOnline] = useState(navigator.onLine); let data = JSON.parse(localStorage.getItem('blaze')); const [rooms, setRooms] = useState(data.rooms); - const onOnline = () => { - setOnline(navigator.onLine); - }; - const handleNewRoom = (room) => { setModal(false); route(`/app/t/${room.toLowerCase()}`); @@ -65,12 +60,6 @@ function Rooms() { localStorage.setItem('blaze', JSON.stringify(data)); }; - useEffect(() => { - window.addEventListener('online', onOnline); - - return () => window.removeEventListener('online', onOnline); - }, []); - return (
    @@ -81,25 +70,38 @@ function Rooms() { { isOnline ? ( <> -
      - { - rooms.map(room => ( -
    • route(`/app/t/${room}`)}> -
      {room}
      - -
    • - )) - } -
    + { + rooms.length ? ( +
      + { + rooms.map(room => ( +
    • route(`/app/t/${room}`)}> +
      {room}
      + +
    • + )) + } +
    + ) : ( + <> +
    + Start by joining a room using the + button +

    + Devices must join same room to share files with each other +

    +
    + + ) + } setModal(true)}> diff --git a/src/routes/App/Rooms/Rooms.scss b/src/routes/App/Rooms/Rooms.scss index 98a20a7f..020b0b1f 100644 --- a/src/routes/App/Rooms/Rooms.scss +++ b/src/routes/App/Rooms/Rooms.scss @@ -42,45 +42,35 @@ } - &:empty::after { - content: 'Devices must join same room to share files with each other'; - color: $secondary; - opacity: 0.5; - display: block; - text-align: center; - font-size: 1rem; - margin-top: 25px; - width: 100%; - } - } - div.message, ul.recent-rooms:empty::before { - content: 'Start by joining a room using the + button'; - font-weight: $font-bold; - font-size: 1.2rem; - line-height: 1.3em; + div.message { + font-size: 1.3rem; color: $secondary; text-align: center; - display: block; - margin-top: 15px; - width: 100%; + margin-top: 5rem; + } + + .devices-same-room { + font-size: 1.1rem; + color: $secondary; + opacity: 0.6; + margin-top: 1.35rem; } @media screen and (min-width: $tablet) { ul.recent-rooms { - display: flex; - flex-wrap: wrap; - margin: 0 -15px; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); + gap: 2rem; li { + margin: 0; flex-direction: column; - min-width: 12.5%; - margin: 15px; padding: 13px 15px; - + div { order: 2; margin-top: 2rem; From 1b47430207c843d2fda5dae34b4e92d494c41cc8 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 27 Jun 2020 22:06:22 +0530 Subject: [PATCH 038/127] Update nav links spacing and font size on mobile --- src/routes/Pages/components/Header/Header.scss | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/routes/Pages/components/Header/Header.scss b/src/routes/Pages/components/Header/Header.scss index 1943625d..493a599a 100644 --- a/src/routes/Pages/components/Header/Header.scss +++ b/src/routes/Pages/components/Header/Header.scss @@ -56,11 +56,8 @@ $header-height: 85px; a { display: inline-block; - // margin: 0 13px; margin: 0; - font-weight: $font-bold; - font-size: 16px; - // height: 100%; + font-size: 1.25rem; line-height: $header-height; width: 100%; transition: color 0.3s ease; @@ -97,12 +94,14 @@ $header-height: 85px; background-image: none; a { - margin: 0 13px; + font-size: 1rem; + padding: 0 1rem; + margin: 0 0.5rem; width: auto; - height: 100%; &.ph-desktop { display: inline; + margin: 0; img { vertical-align: middle; From 43bad2b41095fdd187559df7ead8963dec929d02 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 27 Jun 2020 22:07:47 +0530 Subject: [PATCH 039/127] Add redirects when user goes offline --- src/routes/App/App.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/routes/App/App.js b/src/routes/App/App.js index 8700fd9f..d87f6743 100644 --- a/src/routes/App/App.js +++ b/src/routes/App/App.js @@ -1,6 +1,6 @@ import { h } from 'preact'; import { useState, useEffect } from 'preact/hooks'; -import { Router } from 'preact-router'; +import { Router, route } from 'preact-router'; import Rooms from './Rooms/Rooms'; import NewUser from './NewUser/NewUser'; @@ -10,20 +10,36 @@ import './app.scss'; export default function App() { const [isRegistered, setRegistered] = useState(!!window.localStorage.getItem('blaze')); + const [isOnline, setOnline] = useState(navigator.onLine); const [isLoaded, setLoaded] = useState(false); + + const handleNetworkStatus = () => { + if (!navigator.onLine) { + route('/app', true); + } + setOnline(navigator.onLine); + }; useEffect(() => { document.title = 'App | Blaze'; if (!isRegistered) return; + window.addEventListener('offline', handleNetworkStatus); + window.addEventListener('online', handleNetworkStatus); + const scriptjs = require('scriptjs'); scriptjs([ 'https://unpkg.com/canvas-elements/build/cdn/canvas-elements.min.js', - 'https://cdn.jsdelivr.net/npm/webtorrent@latest/webtorrent.min.js' + 'https://cdn.jsdelivr.net/npm/webtorrent@latest/webtorrent.min.js', ], () => { setLoaded(true); }); + + return () => { + window.removeEventListener('online', handleNetworkStatus); + window.removeEventListener('offline', handleNetworkStatus); + }; }, [isRegistered]); if (!isRegistered) { @@ -39,7 +55,7 @@ export default function App() { { isLoaded ? ( - + ) : null From 1eed1d24dd8b99f29808a3c8bf421ccce1698daf Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 27 Jun 2020 22:08:09 +0530 Subject: [PATCH 040/127] Update font sizes and weights --- src/components/Pill/Pill.scss | 9 ++++----- src/routes/App/FileTransfer/FileTransfer.scss | 8 +++----- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/components/Pill/Pill.scss b/src/components/Pill/Pill.scss index 7c69ffff..18f246c6 100644 --- a/src/components/Pill/Pill.scss +++ b/src/components/Pill/Pill.scss @@ -3,12 +3,11 @@ .pill { display: inline-block; background-color: rgba($primary, 0.21); - border-radius: 50px; + border-radius: 10px; height: 20px; - padding: 0 18px; - font-size: 13px; + padding: 0 1rem; + font-size: 0.8rem; color: $primary; - font-weight: $font-bold; - line-height: 1.6em; + line-height: 20px; vertical-align: middle; } \ No newline at end of file diff --git a/src/routes/App/FileTransfer/FileTransfer.scss b/src/routes/App/FileTransfer/FileTransfer.scss index 8df9649d..eae1e70d 100644 --- a/src/routes/App/FileTransfer/FileTransfer.scss +++ b/src/routes/App/FileTransfer/FileTransfer.scss @@ -162,14 +162,12 @@ text-align: center; h2 { - font-weight: $font-bold; - margin-top: 0; - margin-bottom: 15px; + margin-bottom: 1rem; } p { - font-weight: $font-bold; + font-size: 1.1rem; color: $secondary; - margin: 0 0 30px; + margin: 0 0 2rem; } } \ No newline at end of file From ed90ab6b0b814c5fbd6f600252adf58779d37af9 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 27 Jun 2020 22:08:57 +0530 Subject: [PATCH 041/127] Add removal of toasts after 4s --- src/components/Toast/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Toast/index.js b/src/components/Toast/index.js index 1671fb02..a75a87e0 100644 --- a/src/components/Toast/index.js +++ b/src/components/Toast/index.js @@ -28,9 +28,9 @@ const setQueue = (newQueue) => { const toast = (message) => { setQueue([ ...queue, message ]); - // setTimeout(() => { - // setQueue(queue.slice(0, -1)); - // }, 4000); + setTimeout(() => { + setQueue(queue.slice(0, -1)); + }, 4000); } export { toast }; \ No newline at end of file From f5b9a0c313dd8f0295adfe7bef89b6f435128b8e Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 27 Jun 2020 22:24:54 +0530 Subject: [PATCH 042/127] Refactor formatSize function --- src/utils/formatSize.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/utils/formatSize.js b/src/utils/formatSize.js index 5ac9aee2..957d1d8f 100644 --- a/src/utils/formatSize.js +++ b/src/utils/formatSize.js @@ -1,10 +1,14 @@ /** * Returns an easy to read formatted size * @param {Number} size Size of the file in bytes + * @param {Number} precision Number of digits after decimal * @returns {String} Formatted size */ -function formatSize(size) { - return size / (1024 * 1024) < 1 ? Math.round((size / 1024) * 10) / 10 + 'KB' : Math.round((size / (1024 * 1024) * 10)) / 10 + 'MB'; +function formatSize(size, precision = 1) { + const kbs = size / 1024; + const mbs = kbs / 1024; + + return mbs < 1 ? `${kbs.toFixed(precision)}KB` : `${mbs.toFixed(precision)}MB`; } export default formatSize; \ No newline at end of file From 6b049fef7b400195d9f9066314e14417291c78b1 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 15:20:14 +0530 Subject: [PATCH 043/127] Add additional meta data for shared files Fixes #59 --- src/routes/App/FileTransfer/FileTransfer.js | 56 +++++++++++++++---- src/routes/App/FileTransfer/FileTransfer.scss | 19 +++++-- src/utils/fileShare.js | 21 ++++--- 3 files changed, 72 insertions(+), 24 deletions(-) diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index 7d7fdab3..05cb1222 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -2,7 +2,7 @@ import { h, createRef } from 'preact'; import download from 'downloadjs'; import { route } from 'preact-router'; import { PureComponent } from 'preact/compat'; -import { ArrowLeft, CheckCircle, Plus } from 'preact-feather'; +import { ArrowLeft, CheckCircle, Plus, Image, Film, Box, Music, File } from 'preact-feather'; import Fab from '../../../components/Fab/Fab'; import Modal from '../../../components/Modal/Modal'; @@ -125,6 +125,11 @@ class FileTransfer extends PureComponent { useTorrent: this.state.isP2P, onMeta: (metaData) => { + metaData = metaData.map(file => ({ + ...file, + sentTo: this.state.peers.slice(1), + })); + this.setState({ files: [...metaData, ...this.state.files], }); @@ -159,15 +164,16 @@ class FileTransfer extends PureComponent { componentDidMount() { this.visualizer = new Visualizer(this.canvas.current); this.fileShare = new SocketConnect(this.client.room, this.client.name); + const { socket } = this.fileShare; this.visualizer.addNode({ name: this.client.name, isClient: true, }); - this.fileShare.socket.listen(constants.USER_JOIN, this.onUserJoin.bind(this)); - this.fileShare.socket.listen(constants.USER_LEAVE, this.onUserLeave.bind(this)); - this.fileShare.socket.on('close', data => { + socket.listen(constants.USER_JOIN, this.onUserJoin.bind(this)); + socket.listen(constants.USER_LEAVE, this.onUserLeave.bind(this)); + socket.on('close', data => { this.setState({ errorModal: { isOpen: true, @@ -179,7 +185,11 @@ class FileTransfer extends PureComponent { this.fileShare.receiveFiles({ onMeta: (data) => { - this.sender = data.user; + this.sender = data.sender; + data.meta.forEach(file => { + file.sentBy = data.sender; + }); + this.setState({ files: [...data.meta, ...this.state.files], }); @@ -206,7 +216,7 @@ class FileTransfer extends PureComponent { percentage: progress * 100, }); }, - onDone: (file) => { + onDone: (file, meta) => { if (file !== undefined) { if (Array.isArray(file)) { file.forEach(file => { @@ -214,7 +224,7 @@ class FileTransfer extends PureComponent { }); } else { - download(file); + download(file, meta.name, meta.type); } } this.resetState(); @@ -236,6 +246,23 @@ class FileTransfer extends PureComponent { this.fileShare.socket.close(); } + renderFileIcon(file) { + const size = 20; + + switch (file.type.split('/')[0]) { + case 'image': + return ; + case 'video': + return ; + case 'audio': + return ; + case 'application': + return ; + default: + return ; + } + } + render({ room }, { percentage, peers, isP2P, files, errorModal }) { return ( @@ -260,7 +287,7 @@ class FileTransfer extends PureComponent {
    - + { percentage !== null && ( @@ -299,9 +326,16 @@ class FileTransfer extends PureComponent { { files.map(file => (
  • +
    + {this.renderFileIcon(file)} +

    {file.name}

    - {
    {formatSize(file.size)}
    } +

    + {formatSize(file.size)} + {!!file.sentBy && ` | Sent by ${file.sentBy}`} + {!!file.sentTo && ` | You sent to ${file.sentTo.join(', ')}`} +

    { @@ -310,8 +344,8 @@ class FileTransfer extends PureComponent {
  • ) : ( - - + + ) } diff --git a/src/routes/App/FileTransfer/FileTransfer.scss b/src/routes/App/FileTransfer/FileTransfer.scss index eae1e70d..6c5f42a9 100644 --- a/src/routes/App/FileTransfer/FileTransfer.scss +++ b/src/routes/App/FileTransfer/FileTransfer.scss @@ -90,12 +90,16 @@ padding: 0; li { - padding: 10px 15px; + padding: 0.9rem 1.25rem; display: flex; align-items: center; + .file-type { + margin-right: 1rem; + color: $secondary; + } - div.info { + .info { text-align: left; width: 85%; @@ -108,27 +112,30 @@ width: 100%; } - h5 { + p { + margin: 0; font-weight: $font-normal; color: $secondary; - font-size: 0.85rem; + font-size: 0.8rem; } } .file-progress { transform: rotateZ(-90deg) scaleY(-1); margin-left: auto; + margin-right: 10px; circle { stroke: $primary; stroke-width: 2px; - stroke-dasharray: 63; + stroke-dasharray: 69; fill: #0B101C; } } .file-complete { - margin: 15px 15px 19px auto; + margin-left: auto; + margin-right: 13px; color: $primary; } diff --git a/src/utils/fileShare.js b/src/utils/fileShare.js index 8e12d65a..a5dcbcf6 100644 --- a/src/utils/fileShare.js +++ b/src/utils/fileShare.js @@ -44,9 +44,8 @@ class FileShare { let size = 0, statProg = 0.25; this.socket.listen(constants.FILE_INIT, (data) => { if (data.end) { - // TODO: build the file if (fileParts.length) { - onDone(new Blob(fileParts)); + onDone(new Blob(fileParts), metaData.meta[0]); fileParts = []; size = 0; statProg = 0.25; @@ -112,12 +111,13 @@ class FileShare { const meta = [{ name: file.name, size: file.size, + type: file.type, }]; onMeta(meta); this.socket.send(constants.FILE_INIT, { - user: this.socket.name, + sender: this.socket.name, size: file.size, meta, }); @@ -162,7 +162,15 @@ class FileShare { } async sendFiles({ numPeers, input, useTorrent, onMeta, onSocketProgress, onTorrentProgress, onDone }) { + if (!input) return; + if (useTorrent) { + const inputMap = {}; + for (let i = 0; i < input.length; i++) { + const file = input[i]; + inputMap[file.name + file.size] = file; + } + this.torrentClient.seed(input, trackers, torrent => { this._onTorrent({ torrent, @@ -173,12 +181,13 @@ class FileShare { const filesMeta = torrent.files.map(file => ({ name: file.name, size: file.length, + type: inputMap[file.name + file.length].type, })); onMeta(filesMeta); this.socket.send(constants.FILE_TORRENT, { infoHash: torrent.infoHash, - user: this.socket.name, + sender: this.socket.name, size: torrent.length, meta: filesMeta, }); @@ -186,13 +195,11 @@ class FileShare { }); } else { - if (!input) return; - input = input && (input.length ? [...input] : [ input ]); + input = Array.from(input); for(const file of input) { await this.sendFileSocket({ file, numPeers, onMeta, onSocketProgress }); } - } } From 8c6ce1b1e999f09f9767670eb00db34cdf7c658d Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 16:23:05 +0530 Subject: [PATCH 044/127] Update socket error content based on error type --- constants.js | 3 +- src/routes/App/FileTransfer/FileTransfer.js | 41 ++++++++++++++++----- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/constants.js b/constants.js index fdc43232..09499863 100644 --- a/constants.js +++ b/constants.js @@ -6,5 +6,6 @@ export default { FILE_INIT: 'file-init', FILE_STATUS: 'file-status', FILE_TORRENT: 'file-torrent', - ERR_SAME_NAME: 'User with same name exists', + ERR_SAME_NAME: 'ERR_SAME_NAME', + ERR_CONN_CLOSED: 'ERR_CONN_CLOSED', }; \ No newline at end of file diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index 05cb1222..1a81f6b1 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -177,7 +177,7 @@ class FileTransfer extends PureComponent { this.setState({ errorModal: { isOpen: true, - message: data.reason, + type: data.reason || constants.ERR_CONN_CLOSED, }, }); }); @@ -263,6 +263,35 @@ class FileTransfer extends PureComponent { } } + renderErrorContent() { + const { errorModal } = this.state; + + switch (errorModal.type) { + case constants.ERR_SAME_NAME: + return ( + <> +

    Connection Error!

    +

    User with same name exists in this room

    + + + ); + case constants.ERR_CONN_CLOSED: + default: + return ( + <> +

    Connection closed

    +

    Tip: Try refreshing this page

    + + + + ); + } + } + render({ room }, { percentage, peers, isP2P, files, errorModal }) { return ( @@ -366,15 +395,7 @@ class FileTransfer extends PureComponent {
    -

    Connection Error!

    - -

    - {errorModal.message} -

    - - + {this.renderErrorContent()}
    From 5327d7e5e1282cb8099d717fd695642c0772aa87 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 16:31:57 +0530 Subject: [PATCH 045/127] Refactor file rendering --- src/routes/App/FileTransfer/FileTransfer.js | 69 +++++++++++---------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index 1a81f6b1..626abd9c 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -115,6 +115,11 @@ class FileTransfer extends PureComponent { return; } + if (!this.isSelectorEnabled) { + toast('File transfer is not possible right now'); + return; + } + /** * Start sending files */ @@ -246,7 +251,7 @@ class FileTransfer extends PureComponent { this.fileShare.socket.close(); } - renderFileIcon(file) { + getFileIcon(file) { const size = 20; switch (file.type.split('/')[0]) { @@ -263,6 +268,36 @@ class FileTransfer extends PureComponent { } } + renderFile(file) { + return ( +
  • +
    + {this.getFileIcon(file)} +
    +
    +

    {file.name}

    +

    + {formatSize(file.size)} + {!!file.sentBy && ` | Sent by ${file.sentBy}`} + {!!file.sentTo && ` | You sent to ${file.sentTo.join(', ')}`} +

    +
    + + { + file.sent ? ( +
    + +
    + ) : ( + + + + ) + } +
  • + ); + } + renderErrorContent() { const { errorModal } = this.state; @@ -351,37 +386,7 @@ class FileTransfer extends PureComponent {

    Files

      - - { - files.map(file => ( -
    • -
      - {this.renderFileIcon(file)} -
      -
      -

      {file.name}

      -

      - {formatSize(file.size)} - {!!file.sentBy && ` | Sent by ${file.sentBy}`} - {!!file.sentTo && ` | You sent to ${file.sentTo.join(', ')}`} -

      -
      - - { - file.sent ? ( -
      - -
      - ) : ( - - - - ) - } -
    • - )) - } - + {files.map(file => this.renderFile(file))}
    ) From 0204ef665e6cbc91d9e3dcd59f37e0f6470a6f35 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 16:32:15 +0530 Subject: [PATCH 046/127] Fix minor styling --- src/routes/Pages/Home/Home.js | 2 +- src/routes/Pages/Home/Home.scss | 1 + src/utils/visualizer.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/routes/Pages/Home/Home.js b/src/routes/Pages/Home/Home.js index 80519102..21be95b0 100644 --- a/src/routes/Pages/Home/Home.js +++ b/src/routes/Pages/Home/Home.js @@ -23,7 +23,7 @@ const Home = () => ( Devices connected using Blaze - + diff --git a/src/routes/Pages/Home/Home.scss b/src/routes/Pages/Home/Home.scss index 8ac9e304..1caabb48 100644 --- a/src/routes/Pages/Home/Home.scss +++ b/src/routes/Pages/Home/Home.scss @@ -70,6 +70,7 @@ html { } p { + line-height: 1.3em; font-size: 1.1rem; color: $secondary; } diff --git a/src/utils/visualizer.js b/src/utils/visualizer.js index 490a5daa..0a7210b3 100644 --- a/src/utils/visualizer.js +++ b/src/utils/visualizer.js @@ -256,7 +256,7 @@ class Visualizer { this.nodes.forEach(node => { new CanvasElements.Text({ x: node.cx, - y: node.cy, + y: node.cy + 2, text: node.name[0].toUpperCase(), font: '"Jost", sans-serif', align: 'center', From daf52814ded6636561d141e9ee13df493dee2195 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 17:48:52 +0530 Subject: [PATCH 047/127] Add number of queued files for transfer in the UI Fixes #60 --- src/routes/App/FileTransfer/FileTransfer.js | 33 +++++++++++++++++-- src/routes/App/FileTransfer/FileTransfer.scss | 8 +++-- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index 626abd9c..22de8e9a 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -32,10 +32,11 @@ class FileTransfer extends PureComponent { peers: [], isP2P: true, files: [], + filesQueued: 0, errorModal: { isOpen: false, message: '', - } + }, }; this.canvas = createRef(); @@ -105,6 +106,14 @@ class FileTransfer extends PureComponent { selectFiles(inputFiles) { + /** + * When no files are selected(can occur when text selection is dropped) + */ + if (!inputFiles || !inputFiles.length) { + toast('Invalid file selected'); + return; + } + /** * Firefox for mobile has issue with selection of multiple files. * Only one file gets selected and that has '0' size. This is @@ -115,11 +124,19 @@ class FileTransfer extends PureComponent { return; } + /** + * File selector was disabled, but somehow new files were received + */ if (!this.isSelectorEnabled) { toast('File transfer is not possible right now'); return; } + let filesQueued = inputFiles.length; + this.setState({ + filesQueued: inputFiles.length, + }); + /** * Start sending files */ @@ -135,7 +152,9 @@ class FileTransfer extends PureComponent { sentTo: this.state.peers.slice(1), })); + filesQueued -= metaData.length; this.setState({ + filesQueued, files: [...metaData, ...this.state.files], }); }, @@ -327,7 +346,7 @@ class FileTransfer extends PureComponent { } } - render({ room }, { percentage, peers, isP2P, files, errorModal }) { + render({ room }, { percentage, peers, isP2P, files, filesQueued, errorModal }) { return (
    @@ -380,10 +399,18 @@ class FileTransfer extends PureComponent { /> { - !!files.length && ( + (!!files.length || !!filesQueued) && (

    Files

    + { + !!filesQueued && ( +
    + {`${filesQueued} file${filesQueued > 1 ? 's are ' : ' is '}`} + in queue +
    + ) + }
      {files.map(file => this.renderFile(file))} diff --git a/src/routes/App/FileTransfer/FileTransfer.scss b/src/routes/App/FileTransfer/FileTransfer.scss index 6c5f42a9..1bd4e380 100644 --- a/src/routes/App/FileTransfer/FileTransfer.scss +++ b/src/routes/App/FileTransfer/FileTransfer.scss @@ -67,10 +67,10 @@ .header { border-bottom: $border; - padding: 10px 15px; + padding: 0.6rem 1.25rem; display: flex; - align-items: center; + align-items: baseline; h2 { font-size: 1.25rem; @@ -85,6 +85,10 @@ .files-container { margin: 2rem auto 0; + .header { + justify-content: space-between; + } + ul.files { margin: 5px 0; padding: 0; From 418d1556d240e499df6d8129b95c106aa86eea60 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 20:25:07 +0530 Subject: [PATCH 048/127] Extract visualizer canvas as a component to prevent re-renders --- src/routes/App/FileTransfer/FileTransfer.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index 22de8e9a..f53a38f4 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -1,7 +1,7 @@ import { h, createRef } from 'preact'; import download from 'downloadjs'; import { route } from 'preact-router'; -import { PureComponent } from 'preact/compat'; +import { PureComponent, forwardRef, memo } from 'preact/compat'; import { ArrowLeft, CheckCircle, Plus, Image, Film, Box, Music, File } from 'preact-feather'; import Fab from '../../../components/Fab/Fab'; @@ -16,6 +16,10 @@ import constants from '../../../../constants'; import './FileTransfer.scss'; +const Canvas = memo(forwardRef((props, ref) => { + return ; +})); + class FileTransfer extends PureComponent { constructor(props) { @@ -370,7 +374,7 @@ class FileTransfer extends PureComponent {
      - + { percentage !== null && ( From e899a4c683250fcd80626e0b5f34a201f4ecc556 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 20:54:45 +0530 Subject: [PATCH 049/127] Update P2P message to darker primary color --- src/routes/App/FileTransfer/FileTransfer.js | 12 ++++++++---- src/routes/App/FileTransfer/FileTransfer.scss | 9 +++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index f53a38f4..aff3f29e 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -2,7 +2,7 @@ import { h, createRef } from 'preact'; import download from 'downloadjs'; import { route } from 'preact-router'; import { PureComponent, forwardRef, memo } from 'preact/compat'; -import { ArrowLeft, CheckCircle, Plus, Image, Film, Box, Music, File } from 'preact-feather'; +import { ArrowLeft, CheckCircle, Plus, Image, Film, Box, Music, File, Zap } from 'preact-feather'; import Fab from '../../../components/Fab/Fab'; import Modal from '../../../components/Modal/Modal'; @@ -384,11 +384,15 @@ class FileTransfer extends PureComponent { ) } -
      +
      1 && isP2P && 'p2p'}`}> { peers.length <= 1 ? 'Waiting for other devices to join same room' - : isP2P === true ? 'Established a P2P connection' - : 'Using an intermediate server' + : isP2P ? ( + <> + Established a P2P connection! + + ) + : 'Using an intermediate server for sharing files' }
      diff --git a/src/routes/App/FileTransfer/FileTransfer.scss b/src/routes/App/FileTransfer/FileTransfer.scss index 1bd4e380..f2354154 100644 --- a/src/routes/App/FileTransfer/FileTransfer.scss +++ b/src/routes/App/FileTransfer/FileTransfer.scss @@ -51,10 +51,15 @@ font-weight: $font-bold; } - .transfer-tech { + .transfer-help { margin: 0 0 20px; color: $secondary; - font-size: 1rem; + font-size: 1.2rem; + transition: color 0.5s ease; + + &.p2p { + color: darken($primary, 22); + } } From 3983b97b579a54c439cbde65ca5fe585633f8434 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 23:18:59 +0530 Subject: [PATCH 050/127] Refactor globals --- package.json | 4 ++-- preact.config.js | 11 +++++------ src/utils/socketConnect.js | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index e47d590f..77bf2101 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "private": true, "scripts": { "server": "sucrase-node server/index", - "dev": "concurrently \"npm:server\" \"WS_HOST=ws://localhost:3030 preact watch\"", - "build": "WS_HOST=ws://localhost:3030 preact build", + "dev": "concurrently \"npm:server\" \"preact watch\"", + "build": "preact build", "start": "concurrently \"npm:server\" \"sirv build --cors --single --port 8080 \"", "lint": "eslint src utils server" }, diff --git a/preact.config.js b/preact.config.js index dd594d0c..81e2fa0f 100644 --- a/preact.config.js +++ b/preact.config.js @@ -6,12 +6,11 @@ module.exports = function (config, env, helpers) { let css = helpers.getLoadersByName(config, 'css-loader')[0]; css.loader.options.modules = false; - const envKeys = Object.keys(process.env).reduce((prev, next) => { - prev[`process.env.${next}`] = JSON.stringify(process.env[next]); - return prev; - }, {}); - - config.plugins.push(new DefinePlugin(envKeys)); + config.plugins.push( + new DefinePlugin({ + WS_HOST: JSON.stringify(process.env.WS_HOST || 'ws://localhost:3030'), + }) + ); return config; } \ No newline at end of file diff --git a/src/utils/socketConnect.js b/src/utils/socketConnect.js index fd4bf9e1..1f146104 100644 --- a/src/utils/socketConnect.js +++ b/src/utils/socketConnect.js @@ -8,7 +8,7 @@ import FileShare from './fileShare'; * @param {String} username Name of the user joining the room */ function socketConnect(room, username) { - const socket = new Socket(new WebSocket(process.env.WS_HOST)); + const socket = new Socket(new WebSocket(WS_HOST)); const fileShare = new FileShare(socket); socket.name = username; From 78491dff4245be5f3c7da2780ee6ee8ec53164a5 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 23:19:41 +0530 Subject: [PATCH 051/127] Fix visualizer size on mobiles --- src/utils/visualizer.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/utils/visualizer.js b/src/utils/visualizer.js index 0a7210b3..d750eec5 100644 --- a/src/utils/visualizer.js +++ b/src/utils/visualizer.js @@ -22,15 +22,12 @@ class Visualizer { const dpr = window.devicePixelRatio || 1; this.height = Math.floor(window.innerHeight / 2.2); - this.canvas.style.height = `${this.height}px`; if (window.innerWidth <= 800) { this.width = window.innerWidth - 32; } else { this.width = Math.floor(window.innerWidth / 2); } - - this.canvas.style.width = `${this.width}px`; /** * Canvas resolution correction based on the device pixel-ratio. @@ -43,6 +40,8 @@ class Visualizer { this.canvas.width = this.width * dpr; this.canvas.height = this.height * dpr; + this.canvas.style.width = `${this.width}px`; + this.canvas.style.height = `${this.height}px`; this.ctx.scale(dpr, dpr); From cde38e09e3c49470220622def5c92ad759e3d90f Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 23:28:53 +0530 Subject: [PATCH 052/127] Add button to share room link Fixes #61 --- src/routes/App/FileTransfer/FileTransfer.js | 41 ++++++++++++------- src/routes/App/FileTransfer/FileTransfer.scss | 6 +-- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index aff3f29e..cb00be36 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -2,7 +2,7 @@ import { h, createRef } from 'preact'; import download from 'downloadjs'; import { route } from 'preact-router'; import { PureComponent, forwardRef, memo } from 'preact/compat'; -import { ArrowLeft, CheckCircle, Plus, Image, Film, Box, Music, File, Zap } from 'preact-feather'; +import { ArrowLeft, CheckCircle, Plus, Image, Film, Box, Music, File, Zap, Share2 } from 'preact-feather'; import Fab from '../../../components/Fab/Fab'; import Modal from '../../../components/Modal/Modal'; @@ -108,7 +108,7 @@ class FileTransfer extends PureComponent { this.fileInput.current.value = ''; } - selectFiles(inputFiles) { + selectFiles = (inputFiles) => { /** * When no files are selected(can occur when text selection is dropped) @@ -260,7 +260,11 @@ class FileTransfer extends PureComponent { }); } - handleNewRoom() { + componentWillUnmount() { + this.fileShare.socket.close(); + } + + handleNewRoom = () => { this.setState({ errorModal: { isOpen: false, @@ -270,8 +274,15 @@ class FileTransfer extends PureComponent { route('/app', true); } - componentWillUnmount() { - this.fileShare.socket.close(); + handleShare = () => { + if (!navigator.share) return; + + navigator.share({ + title: 'Share files', + text: `Join my room '${this.props.room}' on Blaze to share files`, + url: window.location.href, + }) + .catch(() => toast('Room link could\'t be shared!')); } getFileIcon(file) { @@ -330,7 +341,7 @@ class FileTransfer extends PureComponent { <>

      Connection Error!

      User with same name exists in this room

      - @@ -355,11 +366,7 @@ class FileTransfer extends PureComponent { return (
      - @@ -367,8 +374,14 @@ class FileTransfer extends PureComponent { {room} - {/* */} -
      @@ -439,7 +452,7 @@ class FileTransfer extends PureComponent {
      - { this.isSelectorEnabled && this.selectFiles(files)} /> } + { this.isSelectorEnabled && }
      ); } diff --git a/src/routes/App/FileTransfer/FileTransfer.scss b/src/routes/App/FileTransfer/FileTransfer.scss index f2354154..f8834f13 100644 --- a/src/routes/App/FileTransfer/FileTransfer.scss +++ b/src/routes/App/FileTransfer/FileTransfer.scss @@ -29,16 +29,16 @@ } button { + margin-top: -5px; &.left { - margin-top: -15px; margin-right: auto; - text-align: left; + margin-left: -16px; } &.right { margin-left: auto; - text-align: right; + margin-right: -15px; } } From 1ffe11b854b8b3e3afc68c9490c53027477b5b73 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 28 Jun 2020 23:30:21 +0530 Subject: [PATCH 053/127] Update font size of nicknames and room name --- src/routes/App/FileTransfer/FileTransfer.scss | 6 +++--- src/utils/visualizer.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/App/FileTransfer/FileTransfer.scss b/src/routes/App/FileTransfer/FileTransfer.scss index f8834f13..c9463f47 100644 --- a/src/routes/App/FileTransfer/FileTransfer.scss +++ b/src/routes/App/FileTransfer/FileTransfer.scss @@ -10,7 +10,7 @@ .room-name { font-weight: $font-normal; flex: 1; - font-size: 1.5rem; + font-size: 1.6rem; position: relative; text-transform: capitalize; @@ -20,9 +20,9 @@ text-transform: uppercase; color: $secondary; display: block; - font-size: 0.85rem; + font-size: 0.9rem; text-align: center; - opacity: 0.5; + opacity: 0.65; width: 100%; font-weight: $font-bold; } diff --git a/src/utils/visualizer.js b/src/utils/visualizer.js index d750eec5..290156f8 100644 --- a/src/utils/visualizer.js +++ b/src/utils/visualizer.js @@ -277,7 +277,7 @@ class Visualizer { font: '"Jost", sans-serif', align: 'center', baseline: 'middle', - size: 14, + size: 15, background: node.textColor, ctx: this.ctx, }) From 6616e5e9750efc1dbc423476a70f08ab2bb41629 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Mon, 27 Jul 2020 23:31:05 +0530 Subject: [PATCH 054/127] Update preact cli to 3.0.0 Fixes #62 --- package-lock.json | 3843 ++++++++++++++++++++++++++++++++++++--------- package.json | 2 +- 2 files changed, 3126 insertions(+), 719 deletions(-) diff --git a/package-lock.json b/package-lock.json index b26cec50..d3a251a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,9 +14,9 @@ } }, "@babel/compat-data": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.1.tgz", - "integrity": "sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.5.tgz", + "integrity": "sha512-mPVoWNzIpYJHbWje0if7Ck36bpbtTvIxOi9+6WSK9wjGEXearAqlwBoTQvVjsAY2VIwgcs8V940geY3okzRCEw==", "dev": true, "requires": { "browserslist": "^4.12.0", @@ -61,52 +61,161 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", - "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", - "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/helper-builder-react-jsx": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.1.tgz", - "integrity": "sha512-KXzzpyWhXgzjXIlJU1ZjIXzUPdej1suE6vzqgImZ/cpAsR/CC8gUcX4EWRmDfWz/cs6HOCPMBIJ3nKoXt3BFuw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/helper-builder-react-jsx-experimental": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", - "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz", + "integrity": "sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-module-imports": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/types": "^7.10.5" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", - "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.1", + "@babel/compat-data": "^7.10.4", "browserslist": "^4.12.0", "invariant": "^2.2.4", "levenary": "^1.1.1", @@ -114,49 +223,417 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", - "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-member-expression-to-functions": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", - "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-regex": "^7.10.1", + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", - "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/types": "^7.10.1", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", - "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", "dev": true, "requires": { - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/helper-function-name": { @@ -180,12 +657,37 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", - "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { @@ -237,43 +739,176 @@ "dev": true }, "@babel/helper-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", - "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/helper-remap-async-to-generator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", - "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-wrap-function": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-replace-supers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", - "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-simple-access": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", - "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", + "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", + "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", "dev": true, "requires": { "@babel/template": "^7.10.1", @@ -296,15 +931,140 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", - "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/helpers": { @@ -336,126 +1096,222 @@ "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", - "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-remap-async-to-generator": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", - "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-decorators": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.1.tgz", - "integrity": "sha512-xBfteh352MTke2U1NpclzMDmAmCdQ2fBZjhZQQfGTjXw6qcRYMkt528sA1U8o0ThDCSeuETXIj5bOGdxN+5gkw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.5.tgz", + "integrity": "sha512-Sc5TAQSZuLzgY0664mMDn24Vw2P8g/VhyLyGPaWiHahhgLqeZvcGeyBZOrJW0oSKIK2mvQ22a1ENXBIQLhrEiQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-decorators": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-decorators": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", - "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", - "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", - "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", - "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-numeric-separator": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", - "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz", + "integrity": "sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.1" + "@babel/plugin-transform-parameters": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", - "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz", - "integrity": "sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz", + "integrity": "sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-private-methods": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", - "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", - "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-syntax-async-generators": { @@ -468,21 +1324,37 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", - "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-syntax-decorators": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz", - "integrity": "sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz", + "integrity": "sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-syntax-dynamic-import": { @@ -504,12 +1376,20 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", - "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-syntax-nullish-coalescing-operator": { @@ -522,12 +1402,20 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", - "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-syntax-object-rest-spread": { @@ -558,448 +1446,1957 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", - "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-syntax-typescript": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.1.tgz", - "integrity": "sha512-X/d8glkrAtra7CaQGMiGs/OGa6XgUzqPcBXCIGFCpCqnfGlT0Wfbzo/B89xHhnInTaItPK8LALblVXcUOEh95Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", + "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", - "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", - "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-remap-async-to-generator": "^7.10.1" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", - "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-block-scoping": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", - "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz", + "integrity": "sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-classes": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", - "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-define-map": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", - "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", - "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", - "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", - "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", - "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-for-of": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", - "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", - "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/plugin-transform-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", - "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", - "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", - "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz", + "integrity": "sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", - "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz", + "integrity": "sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", - "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.10.1", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz", + "integrity": "sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", - "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz", + "integrity": "sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", - "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-object-assign": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.10.1.tgz", - "integrity": "sha512-poBEVwzcTjv6p92ZcnWBUftzyXFCy/Zg/eCQsayu5/ot2+qwnasNvCCKPwdgprgDRzbHVUhh/fzI9rCoFOHLbg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.10.4.tgz", + "integrity": "sha512-6zccDhYEICfMeQqIjuY5G09/yhKzG30DKHJeYBQUHIsJH7c2jXSGvgwRalufLAXAq432OSlsEfAOLlzEsQzxVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-object-super": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", - "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/plugin-transform-parameters": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", - "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", - "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-react-jsx": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.1.tgz", - "integrity": "sha512-MBVworWiSRBap3Vs39eHt+6pJuLUAaK4oxGc8g+wY+vuSJvLiEQjW1LSTqKb8OUPtDvHCkdPhk7d6sjC19xyFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", + "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "^7.10.1", - "@babel/helper-builder-react-jsx-experimental": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-jsx": "^7.10.1" + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", - "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", - "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", - "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-spread": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", - "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz", + "integrity": "sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", - "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-regex": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", - "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", - "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-typescript": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.1.tgz", - "integrity": "sha512-v+QWKlmCnsaimLeqq9vyCsVRMViZG1k2SZTlcZvB+TqyH570Zsij8nvVUZzOASCRiQFUxkLrn9Wg/kH0zgy5OQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.5.tgz", + "integrity": "sha512-YCyYsFrrRMZ3qR7wRwtSSJovPG5vGyG4ZdcSAivGwTfoasMp3VOB/AKhohu3dFtmB4cCDcsndCSxGtrdliCsZQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-typescript": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", - "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", - "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/preset-env": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", - "integrity": "sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.1", - "@babel/helper-compilation-targets": "^7.10.2", - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-proposal-async-generator-functions": "^7.10.1", - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.1", - "@babel/plugin-proposal-json-strings": "^7.10.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", - "@babel/plugin-proposal-numeric-separator": "^7.10.1", - "@babel/plugin-proposal-object-rest-spread": "^7.10.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", - "@babel/plugin-proposal-optional-chaining": "^7.10.1", - "@babel/plugin-proposal-private-methods": "^7.10.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.4.tgz", + "integrity": "sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.4", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.10.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.10.4", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.1", + "@babel/plugin-syntax-class-properties": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-json-strings": "^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.1", - "@babel/plugin-transform-arrow-functions": "^7.10.1", - "@babel/plugin-transform-async-to-generator": "^7.10.1", - "@babel/plugin-transform-block-scoped-functions": "^7.10.1", - "@babel/plugin-transform-block-scoping": "^7.10.1", - "@babel/plugin-transform-classes": "^7.10.1", - "@babel/plugin-transform-computed-properties": "^7.10.1", - "@babel/plugin-transform-destructuring": "^7.10.1", - "@babel/plugin-transform-dotall-regex": "^7.10.1", - "@babel/plugin-transform-duplicate-keys": "^7.10.1", - "@babel/plugin-transform-exponentiation-operator": "^7.10.1", - "@babel/plugin-transform-for-of": "^7.10.1", - "@babel/plugin-transform-function-name": "^7.10.1", - "@babel/plugin-transform-literals": "^7.10.1", - "@babel/plugin-transform-member-expression-literals": "^7.10.1", - "@babel/plugin-transform-modules-amd": "^7.10.1", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/plugin-transform-modules-systemjs": "^7.10.1", - "@babel/plugin-transform-modules-umd": "^7.10.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.10.1", - "@babel/plugin-transform-object-super": "^7.10.1", - "@babel/plugin-transform-parameters": "^7.10.1", - "@babel/plugin-transform-property-literals": "^7.10.1", - "@babel/plugin-transform-regenerator": "^7.10.1", - "@babel/plugin-transform-reserved-words": "^7.10.1", - "@babel/plugin-transform-shorthand-properties": "^7.10.1", - "@babel/plugin-transform-spread": "^7.10.1", - "@babel/plugin-transform-sticky-regex": "^7.10.1", - "@babel/plugin-transform-template-literals": "^7.10.1", - "@babel/plugin-transform-typeof-symbol": "^7.10.1", - "@babel/plugin-transform-unicode-escapes": "^7.10.1", - "@babel/plugin-transform-unicode-regex": "^7.10.1", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.10.4", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.10.2", + "@babel/types": "^7.10.4", "browserslist": "^4.12.0", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, "@babel/preset-modules": { @@ -1016,19 +3413,27 @@ } }, "@babel/preset-typescript": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.1.tgz", - "integrity": "sha512-m6GV3y1ShiqxnyQj10600ZVOFrSSAa8HQ3qIUk2r+gcGtHTIRw0dJnFLt1WNXpKjtVw7yw1DAPU/6ma2ZvgJuA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz", + "integrity": "sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-transform-typescript": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + } } }, "@babel/runtime": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", - "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz", + "integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -1340,6 +3745,23 @@ "@types/yargs": "^13.0.0" } }, + "@npmcli/move-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", + "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, "@polka/url": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", @@ -1347,57 +3769,43 @@ "dev": true }, "@preact/async-loader": { - "version": "3.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@preact/async-loader/-/async-loader-3.0.0-rc.9.tgz", - "integrity": "sha512-PjCi/xKyOv1gx/Q0iUX5p0CANMFv9gkimKzg104FNUKmksh5TgKFi1PkQ2Xn+OLgra8N00auAxOt3BMMvcrGgA==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "loader-utils": "^1.1.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@preact/async-loader/-/async-loader-3.0.0.tgz", + "integrity": "sha512-IdDTfhALnfFEcCO7sweE9sM8N2Q68jqFvRqTk4zsflQSrcrdhA38Bn8U4+iOx4bHNCxNHffR0WtjdeA7hhfKwg==", + "dev": true, + "requires": { + "kleur": "^4.0.2", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "kleur": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.0.2.tgz", + "integrity": "sha512-FGCCxczbrZuF5CtMeO0xfnjhzkVZSXfcWK90IPLucDWZwskrpYN7pmRIgvd8muU0mrPrzy4A2RBGuwCjLHI+nw==", + "dev": true } } }, "@prefresh/core": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-0.6.0.tgz", - "integrity": "sha512-xhhBgQeMmyoSYEr8F27oypxRTWysIKPnc+Ed6U5OmEwPtLeKsccI3UCpSQyrcv5/HmPNPjAYHPqNC0uH57rIkw==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-0.7.2.tgz", + "integrity": "sha512-K01Yx3cWY+A4Cb61cJ93swmFS2ZaeCD2uRg8dvaUAw/6oZvtEPrqzueVRjjavkRdwhIuOwqHbCg4scSbo7jE/A==", "dev": true }, "@prefresh/utils": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-0.1.2.tgz", - "integrity": "sha512-uIXXKHoNPKCyJRvJId06VBSaNJKn1ifVACatJkcfJw4i9e3A89q7aOM91CUAyvgbY8QzPyiqG1EeIbsjgcFgKA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-Ju7WHncqUKsaFp7yAFoNSR2jdr0bjqr8AwV06LtpFmwliPe4IDGRcBGhofg+SY9yld3FUF1JWmEoUOfCyCGRhA==", "dev": true }, "@prefresh/webpack": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@prefresh/webpack/-/webpack-0.7.1.tgz", - "integrity": "sha512-3EFUh8mPAv0xO9C1mDWkyoUtNTIIN2J1f/D1DabLvKlj/wwwVMWprdfexWrhNSFs+hJHRx/dqJzTitPvoa63Yg==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@prefresh/webpack/-/webpack-0.8.2.tgz", + "integrity": "sha512-c4YsahgvnaOsSu9IW12yixiYfEKbC+DjqVPSezAhN0B5wXtoaTelEY5vmPSY3bFjcFiqnWXA1NJ49WbQ5ozAcw==", "dev": true, "requires": { - "@prefresh/core": "0.6.0", - "@prefresh/utils": "0.1.2" + "@prefresh/core": "^0.7.2", + "@prefresh/utils": "^0.2.1" } }, "@rollup/plugin-node-resolve": { @@ -1513,9 +3921,9 @@ "dev": true }, "@types/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "requires": { "@types/minimatch": "*", @@ -2311,18 +4719,26 @@ "dev": true }, "autoprefixer": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", - "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", + "version": "9.8.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.5.tgz", + "integrity": "sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg==", "dev": true, "requires": { "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001061", - "chalk": "^2.4.2", + "caniuse-lite": "^1.0.30001097", + "colorette": "^1.2.0", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.30", + "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "caniuse-lite": { + "version": "1.0.30001107", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001107.tgz", + "integrity": "sha512-86rCH+G8onCmdN4VZzJet5uPELII59cUzDphko3thQFgAQG1RNa+sVLDoALIhRYmflo5iSIzWY3vu1XTWtNMQQ==", + "dev": true + } } }, "aws-sign2": { @@ -2361,9 +4777,9 @@ } }, "babel-esm-plugin": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/babel-esm-plugin/-/babel-esm-plugin-0.8.1.tgz", - "integrity": "sha512-Cg0A0wIW58cQQWK043UDgd1tyuMaCarh7krrgRvb+XsQMa2o6nPJzbgeqr4XWBw/240C1+vPE9oAxsftBEXp7A==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-esm-plugin/-/babel-esm-plugin-0.9.0.tgz", + "integrity": "sha512-OyPyLI6LUuUqNm3HNUldAkynWrLzXkhcZo4fGTsieCgHqvbCoCIMMOwJmfG9Lmp91S7WDIuUr0mvOeI8pAb/pw==", "dev": true, "requires": { "chalk": "2.4.1", @@ -3088,35 +5504,55 @@ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", "dev": true, "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.2.2", "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", "unique-filename": "^1.1.1" }, "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -3499,9 +5935,9 @@ } }, "cli-spinners": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.3.0.tgz", - "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz", + "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==", "dev": true }, "cli-width": { @@ -3634,6 +6070,12 @@ "simple-swizzle": "^0.2.2" } }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -3721,17 +6163,16 @@ } }, "compression-webpack-plugin": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-3.1.0.tgz", - "integrity": "sha512-iqTHj3rADN4yHwXMBrQa/xrncex/uEQy8QHlaTKxGchT/hC0SdlJlmL/5eRqffmWq2ep0/Romw6Ld39JjTR/ug==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-DRoFQNTkQ8gadlk117Y2wxANU+MDY56b1FIZj/yJXucBOTViTHXjthM7G9ocnitksk4kLzt1N2RLF0gDjxI+hg==", "dev": true, "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.0.0", - "neo-async": "^2.5.0", - "schema-utils": "^2.6.1", - "serialize-javascript": "^2.1.2", - "webpack-sources": "^1.0.1" + "cacache": "^15.0.3", + "find-cache-dir": "^3.3.1", + "schema-utils": "^2.6.6", + "serialize-javascript": "^3.0.0", + "webpack-sources": "^1.4.3" }, "dependencies": { "find-cache-dir": { @@ -4161,6 +6602,12 @@ "ajv-keywords": "^3.1.0" } }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, "ssri": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", @@ -4231,9 +6678,9 @@ }, "dependencies": { "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz", + "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -5136,12 +7583,6 @@ "entities": "^1.1.1" } }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -5430,9 +7871,9 @@ "dev": true }, "envinfo": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.1.tgz", - "integrity": "sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.2.tgz", + "integrity": "sha512-k3Eh5bKuQnZjm49/L7H4cHzs2FlL5QjbTB3JrPxoTI8aJG7hVMe4uKyJxSYH4ahseby2waUwk5OaKX/nAsaYgg==", "dev": true }, "enzyme": { @@ -6698,6 +9139,57 @@ "requires": { "mkdirp": "^0.5.1", "tar": "^4.4.1" + }, + "dependencies": { + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } } }, "glob": { @@ -6722,16 +9214,6 @@ "is-glob": "^4.0.1" } }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, "global-dirs": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", @@ -6991,15 +9473,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dev": true, - "requires": { - "react-is": "^16.7.0" - } - }, "hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -9485,15 +11958,6 @@ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dev": true, - "requires": { - "dom-walk": "^0.1.0" - } - }, "mini-css-extract-plugin": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", @@ -9614,30 +12078,13 @@ } }, "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", + "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", "dev": true, "requires": { - "minipass": "^2.9.0" - }, - "dependencies": { - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } + "minipass": "^3.0.0", + "yallist": "^4.0.0" } }, "mississippi": { @@ -9778,9 +12225,9 @@ } }, "native-url": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.3.1.tgz", - "integrity": "sha512-VL0XRW8nNBdSpxqZCbLJKrLHmIMn82FZ8pJzriJgyBmErjdEtrUX6eZAJbtHjlkMooEWUV+EtJ0D5tOP3+1Piw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.3.4.tgz", + "integrity": "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==", "dev": true, "requires": { "querystring": "^0.2.0" @@ -10413,9 +12860,9 @@ } }, "ora": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz", - "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.5.tgz", + "integrity": "sha512-jCDgm9DqvRcNIAEv2wZPrh7E5PcQiDUnbnWbAfu4NGAE2ZNqPFbDixmWldy1YG2QfLeQhuiu6/h5VRrk6cG50w==", "dev": true, "requires": { "chalk": "^3.0.0", @@ -10566,9 +13013,9 @@ } }, "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { "aggregate-error": "^3.0.0" @@ -10901,9 +13348,9 @@ "dev": true }, "portfinder": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", - "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", + "version": "1.0.27", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.27.tgz", + "integrity": "sha512-bJ3U3MThKnyJ9Dx1Idtm5pQmxXqw08+XOHhi/Lie8OF1OlhVaBFhsntAIhkZYjfDcCzszSr0w1yCbccThhzgxQ==", "dev": true, "requires": { "async": "^2.6.2", @@ -11269,15 +13716,15 @@ } }, "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", "dev": true, "requires": { "icss-utils": "^4.1.1", - "postcss": "^7.0.16", + "postcss": "^7.0.32", "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-modules-scope": { @@ -11568,9 +14015,9 @@ "integrity": "sha512-EaTJrerceyAPatQ+vfnadoopsMBZAOY7ak9ogVdUi5xbpR8SoHgtLryXnW+4mQOwt21icqoVR1brkU2dq7pEBA==" }, "preact-cli": { - "version": "3.0.0-rc.14", - "resolved": "https://registry.npmjs.org/preact-cli/-/preact-cli-3.0.0-rc.14.tgz", - "integrity": "sha512-HDhG0zklaxro10U5Kmy5vNmibpXNv4WpdnA/oRZ4T+MhvU29iuEBRW7n1jLcmumK32wWMd0Mg7i2e0HgbJkRJg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/preact-cli/-/preact-cli-3.0.0.tgz", + "integrity": "sha512-fRtrNAss8XYhtp8pAowmTJJYvv8kib9v60b2QQMzlsuUe4OHtvzaDmouPo8kVPo+TInKP7r1ofrXNrRTFcG2UA==", "dev": true, "requires": { "@babel/core": "^7.9.0", @@ -11582,15 +14029,15 @@ "@babel/plugin-transform-react-jsx": "^7.9.0", "@babel/preset-env": "^7.9.0", "@babel/preset-typescript": "^7.9.0", - "@preact/async-loader": "^3.0.0-rc.9", - "@prefresh/webpack": "0.7.1", + "@preact/async-loader": "^3.0.0", + "@prefresh/webpack": "^0.8.1", "autoprefixer": "^9.6.0", - "babel-esm-plugin": "^0.8.0", + "babel-esm-plugin": "^0.9.0", "babel-loader": "^8.0.6", "babel-plugin-macros": "^2.5.1", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "browserslist": "^4.6.4", - "compression-webpack-plugin": "^3.0.0", + "compression-webpack-plugin": "^4.0.0", "console-clear": "^1.0.0", "copy-webpack-plugin": "^5.0.4", "critters-webpack-plugin": "^2.5.0", @@ -11609,11 +14056,11 @@ "html-webpack-plugin": "^3.2.0", "ip": "^1.1.5", "isomorphic-unfetch": "^3.0.0", - "kleur": "^3.0.3", + "kleur": "^4.0.2", "loader-utils": "^2.0.0", "mini-css-extract-plugin": "^0.9.0", "minimatch": "^3.0.3", - "native-url": "0.3.1", + "native-url": "0.3.4", "optimize-css-assets-webpack-plugin": "^5.0.1", "ora": "^4.0.3", "postcss-load-config": "^2.1.0", @@ -11622,8 +14069,7 @@ "promise-polyfill": "^8.1.0", "prompts": "^2.2.1", "raw-loader": "^4.0.0", - "react-hot-loader": "^4.12.9", - "react-refresh": "0.8.2", + "react-refresh": "0.8.3", "require-relative": "^0.8.7", "rimraf": "^3.0.2", "sade": "^1.4.1", @@ -11631,7 +14077,7 @@ "source-map": "^0.7.2", "stack-trace": "0.0.10", "style-loader": "^1.1.3", - "terser-webpack-plugin": "^2.3.5", + "terser-webpack-plugin": "^3.0.3", "typescript": "^3.4.5", "update-notifier": "^4.1.0", "url-loader": "^4.0.0", @@ -11639,7 +14085,7 @@ "webpack": "^4.38.0", "webpack-bundle-analyzer": "^3.3.2", "webpack-dev-server": "^3.4.1", - "webpack-fix-style-only-entries": "^0.4.0", + "webpack-fix-style-only-entries": "^0.5.1", "webpack-merge": "^4.1.0", "webpack-plugin-replace": "^1.2.0", "which": "^2.0.2", @@ -11651,6 +14097,12 @@ "workbox-webpack-plugin": "^5.1.3" }, "dependencies": { + "kleur": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.0.2.tgz", + "integrity": "sha512-FGCCxczbrZuF5CtMeO0xfnjhzkVZSXfcWK90IPLucDWZwskrpYN7pmRIgvd8muU0mrPrzy4A2RBGuwCjLHI+nw==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -11750,12 +14202,6 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=" }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -12096,66 +14542,16 @@ } } }, - "react-hot-loader": { - "version": "4.12.21", - "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.12.21.tgz", - "integrity": "sha512-Ynxa6ROfWUeKWsTHxsrL2KMzujxJVPjs385lmB2t5cHUxdoRPGind9F00tOkdc1l5WBleOF4XEAMILY1KPIIDA==", - "dev": true, - "requires": { - "fast-levenshtein": "^2.0.6", - "global": "^4.3.0", - "hoist-non-react-statics": "^3.3.0", - "loader-utils": "^1.1.0", - "prop-types": "^15.6.1", - "react-lifecycles-compat": "^3.0.4", - "shallowequal": "^1.1.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", - "dev": true - }, "react-refresh": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.2.tgz", - "integrity": "sha512-n8GXxo3DwM2KtFEL69DAVhGc4A1THn2qjmfvSo3nze0NLCoPbywazeJPqdp0RdSGLmyhQzeyA+XPXOobbYlkzg==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", + "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==", "dev": true }, "read-pkg": { @@ -12297,13 +14693,12 @@ "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -12347,9 +14742,9 @@ } }, "registry-auth-token": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz", - "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", "dev": true, "requires": { "rc": "^1.2.8" @@ -12651,6 +15046,14 @@ "rollup-pluginutils": "^2.8.2", "serialize-javascript": "^2.1.2", "terser": "^4.6.2" + }, + "dependencies": { + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + } } }, "rollup-pluginutils": { @@ -12940,10 +15343,13 @@ } }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "serve-index": { "version": "1.9.1", @@ -13070,12 +15476,6 @@ "kind-of": "^6.0.2" } }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", - "dev": true - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -13551,12 +15951,11 @@ } }, "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1", "minipass": "^3.1.1" } }, @@ -14097,43 +16496,29 @@ "dev": true }, "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz", + "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==", "dev": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.0", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "dependencies": { - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true } } @@ -14204,19 +16589,19 @@ } }, "terser-webpack-plugin": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.7.tgz", - "integrity": "sha512-xzYyaHUNhzgaAdBsXxk2Yvo/x1NJdslUaussK3fdpBbvttm1iIwU+c26dj9UxJcwk2c5UWt5F55MUTIA8BE7Dg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.0.8.tgz", + "integrity": "sha512-ygwK8TYMRTYtSyLB2Mhnt90guQh989CIq/mL/2apwi6rA15Xys4ydNUiH4ah6EZCfQxSk26ZFQilZ4IQ6IZw6A==", "dev": true, "requires": { - "cacache": "^13.0.1", + "cacache": "^15.0.5", "find-cache-dir": "^3.3.1", - "jest-worker": "^25.4.0", - "p-limit": "^2.3.0", + "jest-worker": "^26.1.0", + "p-limit": "^3.0.2", "schema-utils": "^2.6.6", - "serialize-javascript": "^3.1.0", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", - "terser": "^4.6.12", + "terser": "^4.8.0", "webpack-sources": "^1.4.3" }, "dependencies": { @@ -14248,9 +16633,9 @@ "dev": true }, "jest-worker": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", - "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.1.0.tgz", + "integrity": "sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ==", "dev": true, "requires": { "merge-stream": "^2.0.0", @@ -14276,9 +16661,9 @@ } }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -14291,6 +16676,17 @@ "dev": true, "requires": { "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } } }, "p-try": { @@ -14321,9 +16717,9 @@ "dev": true }, "serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -14343,6 +16739,17 @@ "requires": { "has-flag": "^4.0.0" } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } } } }, @@ -14678,9 +17085,9 @@ } }, "typescript": { - "version": "3.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", - "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", "dev": true }, "uglify-js": { @@ -15471,9 +17878,9 @@ }, "dependencies": { "acorn-walk": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", - "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, "ws": { @@ -15711,9 +18118,9 @@ } }, "webpack-fix-style-only-entries": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/webpack-fix-style-only-entries/-/webpack-fix-style-only-entries-0.4.0.tgz", - "integrity": "sha512-6TDa56V/xSOw6CBVlhFm6J+xXY2oJzx7CEgH0dmex2Xe1rwb95KkLl3rXvSNpO4wyahwD3YnYqffDNR0LH1BNQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/webpack-fix-style-only-entries/-/webpack-fix-style-only-entries-0.5.1.tgz", + "integrity": "sha512-G4TBoc5JvIVNR0GXG+t314V4AqpqLJuApX7aDNTZl8yhXojAXCwJXKQeF4SF65UpP/bjrvptmHLPmdA+aGUZMw==", "dev": true }, "webpack-log": { diff --git a/package.json b/package.json index 77bf2101..89269191 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "jest": "^24.9.0", "jest-preset-preact": "^1.0.0", "node-sass": "^4.14.1", - "preact-cli": "^3.0.0-rc.6", + "preact-cli": "^3.0.0", "preact-render-spy": "^1.2.1", "sass-loader": "^8.0.2", "sirv-cli": "^0.4.5", From 67dc3443f03465392b039bd2d372a37f11bcb7c5 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Tue, 28 Jul 2020 19:17:57 +0530 Subject: [PATCH 055/127] Refactor default ws server address to use local ip address --- package-lock.json | 1631 +-------------------------------------------- package.json | 3 +- preact.config.js | 3 +- 3 files changed, 29 insertions(+), 1608 deletions(-) diff --git a/package-lock.json b/package-lock.json index d3a251a0..0f67c2ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3496,16 +3496,6 @@ "to-fast-properties": "^2.0.0" } }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "dev": true, - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, "@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", @@ -3545,206 +3535,6 @@ "@hapi/hoek": "^8.3.0" } }, - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", - "dev": true, - "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" - } - }, - "@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - } - } - }, - "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", - "dev": true, - "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", - "dev": true, - "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.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 - } - } - }, - "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "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 - } - } - }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", - "dev": true, - "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" - } - }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" - }, - "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 - } - } - }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, "@npmcli/move-file": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", @@ -3867,47 +3657,6 @@ "defer-to-connect": "^1.0.1" } }, - "@types/babel__core": { - "version": "7.1.8", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.8.tgz", - "integrity": "sha512-KXBiQG2OXvaPWFPDS1rD8yV9vO0OuWIqAEqLsbfX0oU2REN5KuoMnZ1gClWcBhO5I3n6oTVAmrMufOvRqdmFTQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", - "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", - "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.12.tgz", - "integrity": "sha512-t4CoEokHTfcyfb4hUaF9oOHu9RmmNWnm1CP0YmMqOOfClKascOmvlEM736vlqeScuGvBDsHkf8R2INd4DWreQA==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -3930,31 +3679,6 @@ "@types/node": "*" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, "@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", @@ -3994,27 +3718,6 @@ "@types/node": "*" } }, - "@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", - "dev": true - }, - "@types/yargs": { - "version": "13.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.9.tgz", - "integrity": "sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", - "dev": true - }, "@typescript-eslint/experimental-utils": { "version": "2.34.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", @@ -4808,21 +4511,6 @@ "babylon": "^6.18.0" } }, - "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", - "dev": true, - "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - } - }, "babel-loader": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", @@ -4873,72 +4561,6 @@ "object.assign": "^4.1.0" } }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - } - } - }, - "babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", - "dev": true, - "requires": { - "@types/babel__traverse": "^7.0.6" - } - }, "babel-plugin-macros": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", @@ -4972,16 +4594,6 @@ "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", "dev": true }, - "babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", - "dev": true, - "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" - } - }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -5332,23 +4944,6 @@ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -5442,15 +5037,6 @@ "pkg-up": "^2.0.0" } }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, "buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -5704,15 +5290,6 @@ "integrity": "sha512-CnYJ27awX4h7yj5glfK7r1TOI13LBytpLzEgfj0s4mY75/F8pnQcYjL+oVpmS38FB59+vU0gscQ9D8tc+lIXvA==", "dev": true }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "requires": { - "rsvp": "^4.8.4" - } - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -6004,12 +5581,6 @@ "mimic-response": "^1.0.0" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "coa": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", @@ -7478,24 +7049,12 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, "detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, - "diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", - "dev": true - }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -8284,12 +7843,6 @@ "safe-buffer": "^5.1.1" } }, - "exec-sh": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", - "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", - "dev": true - }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -8305,12 +7858,6 @@ "strip-eof": "^1.0.0" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -8361,20 +7908,6 @@ } } }, - "expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" - } - }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -8583,15 +8116,6 @@ "websocket-driver": ">=0.5.1" } }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", @@ -9296,12 +8820,6 @@ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, "gzip-size": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", @@ -9570,12 +9088,6 @@ "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", "dev": true }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, "html-minifier": { "version": "3.5.21", "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", @@ -10185,12 +9697,6 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -10395,791 +9901,39 @@ "dev": true }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isomorphic-unfetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.0.0.tgz", - "integrity": "sha512-V0tmJSYfkKokZ5mgl0cmfQMTb7MLHsBMngTkbLY0eXvKqiVRRoZP04Ly+KhKrJfKtzC9E6Pp15Jo+bwh7Vi2XQ==", - "dev": true, - "requires": { - "node-fetch": "^2.2.0", - "unfetch": "^4.0.0" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, - "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 - } - } - }, - "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0" - } - }, - "jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", - "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", - "dev": true, - "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" - }, - "dependencies": { - "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", - "dev": true, - "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - } - } - } - }, - "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } - } - }, - "jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } - } - }, - "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", - "dev": true, - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } - } - }, - "jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", - "dev": true, - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" - } - }, - "jest-environment-jsdom-fourteen": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-0.1.0.tgz", - "integrity": "sha512-4vtoRMg7jAstitRzL4nbw83VmGH8Rs13wrND3Ud2o1fczDhMUF32iIrNKwYGgeOPUdfvZU4oy8Bbv+ni1fgVCA==", - "dev": true, - "requires": { - "jest-mock": "^24.5.0", - "jest-util": "^24.5.0", - "jsdom": "^14.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", - "dev": true, - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" - } - }, - "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", - "dev": true - }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } - } - }, - "jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", - "dev": true, - "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } - } - }, - "jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } - } - }, - "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" - } - }, - "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", - "dev": true - }, - "jest-preset-preact": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jest-preset-preact/-/jest-preset-preact-1.0.0.tgz", - "integrity": "sha512-//ZFM5oDnAQgROUOcK7HgNrsBmYnDnvLbwDpYmyrHJnZKXIfQG+6Fz7ghJ1o+djT85MzkCcwqrYScdfxk9P37Q==", - "dev": true, - "requires": { - "@babel/core": "^7.5.5", - "babel-jest": "^24.8.0", - "identity-obj-proxy": "^3.0.0", - "isomorphic-unfetch": "^3.0.0", - "jest-environment-jsdom-fourteen": "^0.1.0" - } - }, - "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", - "dev": true - }, - "jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" - } - }, - "jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" - } - }, - "jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - } - }, - "jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" - } - }, - "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", - "dev": true - }, - "jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.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 - } - } + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, - "jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "isomorphic-unfetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.0.0.tgz", + "integrity": "sha512-V0tmJSYfkKokZ5mgl0cmfQMTb7MLHsBMngTkbLY0eXvKqiVRRoZP04Ly+KhKrJfKtzC9E6Pp15Jo+bwh7Vi2XQ==", "dev": true, "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - } + "node-fetch": "^2.2.0", + "unfetch": "^4.0.0" } }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, "jest-worker": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", @@ -11229,63 +9983,6 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -11419,12 +10116,6 @@ "package-json": "^6.3.0" } }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -11455,18 +10146,6 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -11656,15 +10335,6 @@ } } }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -12329,12 +10999,6 @@ } } }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -12411,19 +11075,6 @@ "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" }, - "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, "node-releases": { "version": "1.1.58", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", @@ -12979,15 +11630,6 @@ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "dev": true, - "requires": { - "p-reduce": "^1.0.0" - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -13021,12 +11663,6 @@ "aggregate-error": "^3.0.0" } }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, "p-retry": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", @@ -14554,72 +13190,6 @@ "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==", "dev": true }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - } - } - }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -14641,15 +13211,6 @@ "picomatch": "^2.2.1" } }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -15083,12 +13644,6 @@ "nearley": "^2.7.10" } }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true - }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -15141,23 +13696,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "dev": true, - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - } - }, "sass-graph": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", @@ -15491,12 +14029,6 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, "side-channel": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", @@ -15602,12 +14134,6 @@ } } }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", @@ -15971,12 +14497,6 @@ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", "dev": true }, - "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", - "dev": true - }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -16159,33 +14679,6 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -16296,12 +14789,6 @@ } } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, "strip-comments": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", @@ -16753,18 +15240,6 @@ } } }, - "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "dev": true, - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -16787,12 +15262,6 @@ "thenify": ">= 3.1.0 < 4" } }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -16877,12 +15346,6 @@ "os-tmpdir": "~1.0.2" } }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -17531,26 +15994,6 @@ "browser-process-hrtime": "^1.0.0" } }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, "watchpack": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", @@ -18196,17 +16639,6 @@ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "dev": true }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -18539,17 +16971,6 @@ "mkdirp": "^0.5.1" } }, - "write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, "ws": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz", diff --git a/package.json b/package.json index 89269191..fbe1212f 100644 --- a/package.json +++ b/package.json @@ -40,8 +40,7 @@ "eslint": "^6.0.1", "eslint-config-preact": "^1.1.0", "identity-obj-proxy": "^3.0.0", - "jest": "^24.9.0", - "jest-preset-preact": "^1.0.0", + "ip": "^1.1.5", "node-sass": "^4.14.1", "preact-cli": "^3.0.0", "preact-render-spy": "^1.2.1", diff --git a/preact.config.js b/preact.config.js index 81e2fa0f..3c9411ac 100644 --- a/preact.config.js +++ b/preact.config.js @@ -1,4 +1,5 @@ const { DefinePlugin } = require('webpack'); +const ip = require('ip'); module.exports = function (config, env, helpers) { // disable css modules @@ -8,7 +9,7 @@ module.exports = function (config, env, helpers) { config.plugins.push( new DefinePlugin({ - WS_HOST: JSON.stringify(process.env.WS_HOST || 'ws://localhost:3030'), + WS_HOST: JSON.stringify(process.env.WS_HOST || `ws://${ip.address()}:3030`), }) ); From 02fdc1801f2c0bfd297f5e4d0650f2fd90b24e6c Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 31 Jul 2020 23:08:32 +0530 Subject: [PATCH 056/127] Update to load specific version of webtorrent --- src/routes/App/App.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/App/App.js b/src/routes/App/App.js index d87f6743..0be103d6 100644 --- a/src/routes/App/App.js +++ b/src/routes/App/App.js @@ -31,7 +31,7 @@ export default function App() { scriptjs([ 'https://unpkg.com/canvas-elements/build/cdn/canvas-elements.min.js', - 'https://cdn.jsdelivr.net/npm/webtorrent@latest/webtorrent.min.js', + 'https://cdn.jsdelivr.net/npm/webtorrent@0.108.6/webtorrent.min.js', ], () => { setLoaded(true); }); From 01bb640b4d117bfd60c6e03b9bbe93d21e2f69b4 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 2 Aug 2020 21:10:06 +0530 Subject: [PATCH 057/127] Improve Modal transition --- src/components/Modal/Modal.js | 14 ++++---------- src/components/Modal/Modal.scss | 7 +++++-- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/components/Modal/Modal.js b/src/components/Modal/Modal.js index 3d353c48..96aeb825 100644 --- a/src/components/Modal/Modal.js +++ b/src/components/Modal/Modal.js @@ -8,12 +8,11 @@ import './Modal.scss'; function Modal({ isClosable, isOpen, onClose, children }) { useEffect(() => { - document.getElementById('app').style.filter = isOpen ? 'blur(18px)' : ''; document.body.classList.toggle('no-bg-image', isOpen); }, [ isOpen ]); - const ModalRender = ( - +
    , + document.body ); - - if (isOpen) { - return createPortal(ModalRender, document.body); - } - - return null; } Modal.defaultProps = { diff --git a/src/components/Modal/Modal.scss b/src/components/Modal/Modal.scss index 48264262..bad4d461 100644 --- a/src/components/Modal/Modal.scss +++ b/src/components/Modal/Modal.scss @@ -9,7 +9,10 @@ display: flex; align-items: center; justify-content: center; - // transition: all 0.2s ease; + opacity: 0; + visibility: hidden; + transition: all 0.2s ease; + backdrop-filter: blur(18px); .modal { background-color: $bg; @@ -29,7 +32,7 @@ &::before { content: ''; - background-color: rgba($secondary, 0.15); + background-color: rgba($secondary, 0.2); background-image: $noise; background-size: 32%; z-index: -1; From b104e492cab12e6f6c4d334c67977e0de5efcc2f Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 8 Aug 2020 15:21:22 +0530 Subject: [PATCH 058/127] Add Loading component --- src/components/Loading/Loading.js | 43 +++++++++++++ src/components/Loading/Loading.scss | 99 +++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 src/components/Loading/Loading.js create mode 100644 src/components/Loading/Loading.scss diff --git a/src/components/Loading/Loading.js b/src/components/Loading/Loading.js new file mode 100644 index 00000000..7f69f711 --- /dev/null +++ b/src/components/Loading/Loading.js @@ -0,0 +1,43 @@ +import { h } from 'preact'; + +import './Loading.scss'; + +function Loading({ fullScreen, children }) { + + return ( +
    +
    + + + + + + + + + +
    + { + fullScreen && ( +
    + {children} +
    + ) + } +
    + ); +} + +Loading.defaultProps = { + children: 'Preparing file transfer', +}; + +export default Loading; diff --git a/src/components/Loading/Loading.scss b/src/components/Loading/Loading.scss new file mode 100644 index 00000000..f9045d7d --- /dev/null +++ b/src/components/Loading/Loading.scss @@ -0,0 +1,99 @@ +@import '../../scss/variables'; + +.loading { + animation: fadein 2s ease; + + &.full-screen { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + } + + .loading-wrapper { + position: relative; + width: 119px; + height: 169px; + } + + svg { + position: absolute; + } + + .lightning { + filter: drop-shadow(0 0 10px rgba($primary, 0.5)); + + path { + animation: grow 3.5s linear -6s infinite; + } + } + + .node { + animation: node 3.5s linear infinite; + + &:nth-child(1) { + animation-delay: -2.05s; + } + + &:nth-child(3) { + animation-delay: -3s; + animation-direction: reverse; + } + + &:nth-child(4) { + animation-delay: -1.7s; + } + } + + .message { + margin-top: 2.5rem; + font-size: 1.2rem; + } +} + +@keyframes fadein { + 0%, 50% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +@keyframes grow { + 0% { + stroke-dashoffset: 460; + } + + 45%, 55% { + stroke-dashoffset: 0; + } + + 100% { + stroke-dashoffset: -460; + } +} + +@keyframes node { + 0% { + fill: $secondary; + } + + 1% { + fill: $primary; + } + + 50% { + fill: $primary; + } + + 51% { + fill: $secondary; + } +} \ No newline at end of file From fffb8d1567dc1c11479dfd67ef6ff10714291073 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 8 Aug 2020 15:21:50 +0530 Subject: [PATCH 059/127] Update to show Loading when scripts are loading --- src/routes/App/App.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/routes/App/App.js b/src/routes/App/App.js index 0be103d6..344f1058 100644 --- a/src/routes/App/App.js +++ b/src/routes/App/App.js @@ -5,6 +5,7 @@ import { Router, route } from 'preact-router'; import Rooms from './Rooms/Rooms'; import NewUser from './NewUser/NewUser'; import FileTransfer from './FileTransfer/FileTransfer'; +import Loading from '../../components/Loading/Loading'; import './app.scss'; @@ -51,15 +52,15 @@ export default function App() { } return ( -
    +
    { isLoaded ? ( - ) : null + ) : } -
    + ); } \ No newline at end of file From 7dfe0c9502f78248dabed98342045f79e6a76d18 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 8 Aug 2020 15:22:11 +0530 Subject: [PATCH 060/127] Refactor waves to svg animation SVG animation ensures that the animation plays after the page has loaded --- src/routes/Pages/Home/Home.js | 10 +++++++++- src/routes/Pages/Home/Home.scss | 5 +---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/routes/Pages/Home/Home.js b/src/routes/Pages/Home/Home.js index 21be95b0..78349669 100644 --- a/src/routes/Pages/Home/Home.js +++ b/src/routes/Pages/Home/Home.js @@ -23,7 +23,15 @@ const Home = () => ( Devices connected using Blaze - + + + diff --git a/src/routes/Pages/Home/Home.scss b/src/routes/Pages/Home/Home.scss index 1caabb48..adcba135 100644 --- a/src/routes/Pages/Home/Home.scss +++ b/src/routes/Pages/Home/Home.scss @@ -155,11 +155,8 @@ svg.waves { path { fill: none; - stroke: $primary; stroke-width: 10px; - stroke-dasharray: 1650; - stroke-dashoffset: 0; - animation: waves 1.8s ease-in-out; + stroke: $primary; } } From 815e8bfc7febf4a9eb6163bfbda1887e42360147 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 8 Aug 2020 15:50:48 +0530 Subject: [PATCH 061/127] Update FAB to show text on large mobile screens --- src/components/Fab/Fab.scss | 2 +- src/components/Toast/Toast.scss | 1 + src/components/Toast/ToastContainer.scss | 8 ++++++++ src/scss/_variables.scss | 3 ++- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/components/Fab/Fab.scss b/src/components/Fab/Fab.scss index d01ca104..a2935cfb 100644 --- a/src/components/Fab/Fab.scss +++ b/src/components/Fab/Fab.scss @@ -37,7 +37,7 @@ button.fab { } } -@media screen and (min-width: $tablet) { +@media screen and (min-width: $mobile-sm) { button.fab { height: 55px; width: auto; diff --git a/src/components/Toast/Toast.scss b/src/components/Toast/Toast.scss index f2bf4692..289e4e29 100644 --- a/src/components/Toast/Toast.scss +++ b/src/components/Toast/Toast.scss @@ -5,4 +5,5 @@ padding: 0.35rem 0.85rem; background-color: rgba($secondary, 0.85); margin: 10px 0; + text-align: center; } \ No newline at end of file diff --git a/src/components/Toast/ToastContainer.scss b/src/components/Toast/ToastContainer.scss index cb5fae4f..71213fa8 100644 --- a/src/components/Toast/ToastContainer.scss +++ b/src/components/Toast/ToastContainer.scss @@ -1,3 +1,5 @@ +@import '../../scss/variables'; + .toast-container { position: fixed; bottom: 47px; @@ -5,4 +7,10 @@ transform: translateX(-50%); z-index: 2; user-select: none; +} + +@media screen and (min-width: $mobile-sm) { + .toast-container { + bottom: 80px; + } } \ No newline at end of file diff --git a/src/scss/_variables.scss b/src/scss/_variables.scss index 416bbad4..cdd40cb6 100644 --- a/src/scss/_variables.scss +++ b/src/scss/_variables.scss @@ -12,4 +12,5 @@ $font-normal: 500; $font-bold: 600; $noise: url(/assets/images/noise.png); -$tablet: 800px; \ No newline at end of file +$tablet: 768px; +$mobile-sm: 359px; \ No newline at end of file From 7cfbed7d00defe29a9dffc373a7ba8dd0cc63eb1 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 8 Aug 2020 15:51:33 +0530 Subject: [PATCH 062/127] Refactor isSelectorEnabled to a state variable This change gives more control on when the file selector should be disabled --- src/routes/App/FileTransfer/FileTransfer.js | 31 +++++++++++++-------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index cb00be36..7e260933 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -41,6 +41,7 @@ class FileTransfer extends PureComponent { isOpen: false, message: '', }, + isSelectorEnabled: false, }; this.canvas = createRef(); @@ -60,10 +61,6 @@ class FileTransfer extends PureComponent { } } - get isSelectorEnabled() { - return this.state.percentage === null ? (this.state.peers.length - 1 > 0) : false; - } - onUserJoin(users) { let isP2P = this.state.isP2P; @@ -80,13 +77,16 @@ class FileTransfer extends PureComponent { this.setState({ peers: users.map(user => user.name), isP2P, + isSelectorEnabled: users.length - 1 > 0 }); } onUserLeave(user) { this.visualizer.removeNode(user); + const peers = this.state.peers.filter(peer => peer !== user); this.setState({ - peers: this.state.peers.filter(peer => peer !== user), + peers, + isSelectorEnabled: peers.length - 1 > 0, }); } @@ -102,6 +102,7 @@ class FileTransfer extends PureComponent { file.sent = true; return file; }), + isSelectorEnabled: this.state.peers.length - 1 > 0, }); // Remove the file from the input @@ -131,7 +132,7 @@ class FileTransfer extends PureComponent { /** * File selector was disabled, but somehow new files were received */ - if (!this.isSelectorEnabled) { + if (!this.state.isSelectorEnabled) { toast('File transfer is not possible right now'); return; } @@ -160,6 +161,7 @@ class FileTransfer extends PureComponent { this.setState({ filesQueued, files: [...metaData, ...this.state.files], + isSelectorEnabled: false, }); }, onTorrentProgress: ({ wires }) => { @@ -169,10 +171,14 @@ class FileTransfer extends PureComponent { .map(wire => wire.peerId), [] ); + this.setState({ isSelectorEnabled: false }); }, onSocketProgress: ({ progress }) => { const percentage = progress * 100; - this.setState({ percentage }); + this.setState({ + percentage, + isSelectorEnabled: false, + }); this.visualizer.startSharing(); if (percentage >= 100) { @@ -220,6 +226,7 @@ class FileTransfer extends PureComponent { this.setState({ files: [...data.meta, ...this.state.files], + isSelectorEnabled: false, }); }, onProgress: ({ progress, wires }) => { @@ -242,6 +249,7 @@ class FileTransfer extends PureComponent { this.visualizer.startSharing(sentTo, receivedBy); this.setState({ percentage: progress * 100, + isSelectorEnabled: false, }); }, onDone: (file, meta) => { @@ -281,8 +289,7 @@ class FileTransfer extends PureComponent { title: 'Share files', text: `Join my room '${this.props.room}' on Blaze to share files`, url: window.location.href, - }) - .catch(() => toast('Room link could\'t be shared!')); + }); } getFileIcon(file) { @@ -361,7 +368,7 @@ class FileTransfer extends PureComponent { } } - render({ room }, { percentage, peers, isP2P, files, filesQueued, errorModal }) { + render({ room }, { percentage, peers, isP2P, files, filesQueued, errorModal, isSelectorEnabled }) { return (
    @@ -440,7 +447,7 @@ class FileTransfer extends PureComponent { ) } - this.fileInput.current.click()}> + this.fileInput.current.click()}> @@ -452,7 +459,7 @@ class FileTransfer extends PureComponent {
    - { this.isSelectorEnabled && } + { isSelectorEnabled && }
    ); } From c319a10c637f429278c6989f0038c044afaa7e93 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 8 Aug 2020 17:42:56 +0530 Subject: [PATCH 063/127] Add GitHub icon --- src/routes/Pages/components/Header/Header.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/routes/Pages/components/Header/Header.js b/src/routes/Pages/components/Header/Header.js index 35440104..6a6ce772 100644 --- a/src/routes/Pages/components/Header/Header.js +++ b/src/routes/Pages/components/Header/Header.js @@ -1,6 +1,6 @@ import { h } from 'preact'; import { useState } from 'preact/hooks'; -import { Menu, X } from 'preact-feather'; +import { Menu, X, Github } from 'preact-feather'; import Pill from '../../../../components/Pill/Pill'; import './Header.scss'; @@ -27,7 +27,10 @@ function Header() { From 153fd5010911acfeb43341a04f4f9120e178bec4 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 8 Aug 2020 18:12:17 +0530 Subject: [PATCH 064/127] Add file size limit constants for sockets, torrent --- constants.js | 1 + preact.config.js | 2 ++ src/routes/App/FileTransfer/FileTransfer.js | 15 ++++++++++++++- src/utils/fileShare.js | 9 +++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/constants.js b/constants.js index 09499863..58842c2f 100644 --- a/constants.js +++ b/constants.js @@ -8,4 +8,5 @@ export default { FILE_TORRENT: 'file-torrent', ERR_SAME_NAME: 'ERR_SAME_NAME', ERR_CONN_CLOSED: 'ERR_CONN_CLOSED', + ERR_LARGE_FILE: 'ERR_LARGE_FILE', }; \ No newline at end of file diff --git a/preact.config.js b/preact.config.js index 3c9411ac..9bff4881 100644 --- a/preact.config.js +++ b/preact.config.js @@ -10,6 +10,8 @@ module.exports = function (config, env, helpers) { config.plugins.push( new DefinePlugin({ WS_HOST: JSON.stringify(process.env.WS_HOST || `ws://${ip.address()}:3030`), + WS_SIZE_LIMIT: JSON.stringify(process.env.WS_SIZE_LIMIT || 1e8), + TORRENT_SIZE_LIMIT: JSON.stringify(process.env.TORRENT_SIZE_LIMIT || 7e8), }) ); diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index 7e260933..5fb201c6 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -97,6 +97,7 @@ class FileTransfer extends PureComponent { resetState() { this.visualizer.stopSharing(); this.setState({ + filesQueued: 0, percentage: null, files: this.state.files.map(file => { file.sent = true; @@ -149,7 +150,7 @@ class FileTransfer extends PureComponent { .sendFiles({ numPeers: this.state.peers.length, input: inputFiles, - useTorrent: this.state.isP2P, + useTorrent: false && this.state.isP2P, onMeta: (metaData) => { metaData = metaData.map(file => ({ @@ -192,6 +193,18 @@ class FileTransfer extends PureComponent { this.visualizer.stopSharing(); this.resetState(); }, + }) + .catch(err => { + switch(err.message) { + case constants.ERR_LARGE_FILE: + // File selected by the user is larger than the set limit + toast(`File size is limited to ${formatSize(this.state.isP2P ? TORRENT_SIZE_LIMIT : WS_SIZE_LIMIT)}`) + break; + default: + // Some other error occurred + toast('An error occured'); + } + this.resetState(); }); } diff --git a/src/utils/fileShare.js b/src/utils/fileShare.js index a5dcbcf6..f232144e 100644 --- a/src/utils/fileShare.js +++ b/src/utils/fileShare.js @@ -166,9 +166,15 @@ class FileShare { if (useTorrent) { const inputMap = {}; + let totalSize = 0; for (let i = 0; i < input.length; i++) { const file = input[i]; inputMap[file.name + file.size] = file; + totalSize += file.size; + } + + if (totalSize > TORRENT_SIZE_LIMIT) { + throw new Error(constants.ERR_LARGE_FILE); } this.torrentClient.seed(input, trackers, torrent => { @@ -198,6 +204,9 @@ class FileShare { input = Array.from(input); for(const file of input) { + if (file.size > WS_SIZE_LIMIT) { + throw new Error(constants.ERR_LARGE_FILE); + } await this.sendFileSocket({ file, numPeers, onMeta, onSocketProgress }); } } From 040e464a07cec9c67b8971e39da9364626651566 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 8 Aug 2020 18:12:52 +0530 Subject: [PATCH 065/127] Fix text wrapping --- src/components/Toast/Toast.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Toast/Toast.scss b/src/components/Toast/Toast.scss index 289e4e29..3e083057 100644 --- a/src/components/Toast/Toast.scss +++ b/src/components/Toast/Toast.scss @@ -6,4 +6,5 @@ background-color: rgba($secondary, 0.85); margin: 10px 0; text-align: center; + white-space: nowrap; } \ No newline at end of file From 52a802a20b1c17cc981459400dea4717def6450c Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 9 Aug 2020 20:22:20 +0530 Subject: [PATCH 066/127] Add variant prop to FAB for supported variants - auto: Large FAB on large mobiles, tablets and desktops and small FAB on small mobiles - lg: Large FAB - sm: Small FAB --- package-lock.json | 8 ++----- package.json | 1 + src/components/Fab/Fab.js | 15 ++++++++++-- src/components/Fab/Fab.scss | 46 ++++++++++++++++++++++++++----------- 4 files changed, 48 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0f67c2ad..95273ae4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9964,8 +9964,7 @@ "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 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.0", @@ -10264,7 +10263,6 @@ "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 || ^4.0.0" } @@ -12944,7 +12942,6 @@ "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -13181,8 +13178,7 @@ "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-refresh": { "version": "0.8.3", diff --git a/package.json b/package.json index fbe1212f..8f49eaa3 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "preact-feather": "^4.1.0", "preact-render-to-string": "^5.1.4", "preact-router": "^3.2.1", + "prop-types": "^15.7.2", "scriptjs": "^2.5.9", "sucrase": "^3.15.0", "ws": "^7.3.0" diff --git a/src/components/Fab/Fab.js b/src/components/Fab/Fab.js index 19c47434..eaa3f891 100644 --- a/src/components/Fab/Fab.js +++ b/src/components/Fab/Fab.js @@ -1,11 +1,12 @@ import { h } from 'preact'; +import PropTypes from 'prop-types'; import './Fab.scss'; -function Fab({ children, text, ...props }) { +function Fab({ children, text, variant, ...props }) { return ( - - - )) + !!queuedFiles.length && ( +
    + Join a room to share the selected files +
    + ) } - +
      + { + rooms.map(room => ( +
    • route(`/app/t/${room}`)}> +
      {room}
      + +
    • + )) + } +
    + ) : ( <>
    - Start by joining a room using the + button + {queuedFiles.length ? 'Create a room using + button to share selected files' : 'Start by joining a room using the + button'}

    Devices must join same room to share files with each other

    diff --git a/src/sw.js b/src/sw.js new file mode 100644 index 00000000..6e7e28c7 --- /dev/null +++ b/src/sw.js @@ -0,0 +1,59 @@ +import { getFiles, setupPrecaching, setupRouting } from 'preact-cli/sw'; +import constants from '../constants'; + +setupRouting(); + +// TODO: Improve caching +const urlsToCache = getFiles(); +setupPrecaching(urlsToCache); + +function handleShareTarget(event) { + event.respondWith(Response.redirect('/app/?share-target')); + + event.waitUntil(async function() { + await nextMessage(constants.SW_SHARE_READY); + const client = await self.clients.get(event.resultingClientId); + const data = await event.request.formData(); + + client.postMessage({ + data: data.getAll('files'), + action: constants.SW_LOAD_FILES + }); + }()); +} + +self.addEventListener('fetch', (event) => { + const url = new URL(event.request.url); + + if (url.origin !== location.origin) return; + + if ( + url.pathname === '/app/' && + url.searchParams.has('share-target') && + event.request.method === 'POST' + ) { + handleShareTarget(event); + } +}); + +/** + * An implementation of nextMessage for awaiting to received messages + * taken form squoosh.app + */ +const nextMessageResolveMap = new Map(); + +function nextMessage(dataVal) { + return new Promise((resolve) => { + if (!nextMessageResolveMap.has(dataVal)) { + nextMessageResolveMap.set(dataVal, []); + } + nextMessageResolveMap.get(dataVal)?.push(resolve); + }); +} + +self.addEventListener('message', (event) => { + const resolvers = nextMessageResolveMap.get(event.data); + if (!resolvers) return; + nextMessageResolveMap.delete(event.data); + for (const resolve of resolvers) resolve(); +}); \ No newline at end of file From 63b31ef689ea69c38199d357ff2e5753c9915ebe Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sun, 9 Aug 2020 23:43:32 +0530 Subject: [PATCH 071/127] Update animation timing function to ease --- src/components/Loading/Loading.scss | 10 +++++----- src/routes/Pages/Home/Home.js | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/components/Loading/Loading.scss b/src/components/Loading/Loading.scss index f9045d7d..52708cd9 100644 --- a/src/components/Loading/Loading.scss +++ b/src/components/Loading/Loading.scss @@ -29,12 +29,12 @@ filter: drop-shadow(0 0 10px rgba($primary, 0.5)); path { - animation: grow 3.5s linear -6s infinite; + animation: grow 3.5s ease-in-out -6s infinite; } } .node { - animation: node 3.5s linear infinite; + animation: node 3.5s ease-in-out infinite; &:nth-child(1) { animation-delay: -2.05s; @@ -46,7 +46,7 @@ } &:nth-child(4) { - animation-delay: -1.7s; + animation-delay: -1.8s; } } @@ -89,11 +89,11 @@ fill: $primary; } - 50% { + 58% { fill: $primary; } - 51% { + 59% { fill: $secondary; } } \ No newline at end of file diff --git a/src/routes/Pages/Home/Home.js b/src/routes/Pages/Home/Home.js index 78349669..85525d1e 100644 --- a/src/routes/Pages/Home/Home.js +++ b/src/routes/Pages/Home/Home.js @@ -30,6 +30,9 @@ const Home = () => ( to="0" dur="1.8s" fill="freeze" + keySplines=".42,0,.58,1" + calcMode="spline" + keyTimes="0; 1" /> From 1d08c696cf062d04f846aa0a0c069d2565728f7f Mon Sep 17 00:00:00 2001 From: blenderskool Date: Mon, 10 Aug 2020 00:48:15 +0530 Subject: [PATCH 072/127] Fix initial state queued files --- src/routes/App/App.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/App/App.js b/src/routes/App/App.js index c89beb9e..83460e6a 100644 --- a/src/routes/App/App.js +++ b/src/routes/App/App.js @@ -16,7 +16,7 @@ export default function App() { const [isLoaded, setLoaded] = useState(false); const [isRegistered, setRegistered] = useState(!!window.localStorage.getItem('blaze')); const isOnline = useOnline(); - const [queuedFiles, setQueuedFiles] = useSWMessage([{}], constants.SW_LOAD_FILES); + const [queuedFiles, setQueuedFiles] = useSWMessage([], constants.SW_LOAD_FILES); /* Mount specific effects */ useEffect(() => { From 5e7b0555989ca0957b4eb39d39dfcf3fea9d1c0a Mon Sep 17 00:00:00 2001 From: blenderskool Date: Mon, 10 Aug 2020 10:06:19 +0530 Subject: [PATCH 073/127] Add socket file size limit on server --- server/index.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/server/index.js b/server/index.js index 7549e214..b0babb38 100644 --- a/server/index.js +++ b/server/index.js @@ -7,11 +7,13 @@ import Room from '../utils/room'; import log from './log'; import constants from '../constants'; +const CORS_ORIGIN = process.env.ORIGIN || '*'; +const PORT = process.env.PORT || 3030; +const WS_SIZE_LIMIT = process.env.WS_SIZE_LIMIT || 1e8; + const app = express(); app.use(express.json()); -app.use(cors({ - origin: process.env.ORIGIN || '*', -})); +app.use(cors({ origin: CORS_ORIGIN })); const server = http.createServer(app); @@ -66,6 +68,9 @@ wss.on('connection', (ws) => { socket.listen(constants.FILE_INIT, (data) => { // TODO: Prevent init from multiple sockets if a sender is already there + // TODO: Improve error messaging via sockets + if (data.size > WS_SIZE_LIMIT) return; + if (data.end) { log(`File transfer just finished!`); } else { @@ -101,7 +106,6 @@ app.get('/', (req, res) => { }); }); -const port = process.env.PORT || 3030; -server.listen(port, '0.0.0.0', () => { - log(`listening on *:${port}`); +server.listen(PORT, '0.0.0.0', () => { + log(`listening on *:${PORT}`); }); \ No newline at end of file From 175a6e617e3dd19837c6241abd1f5b14e2d5634d Mon Sep 17 00:00:00 2001 From: blenderskool Date: Mon, 10 Aug 2020 11:41:16 +0530 Subject: [PATCH 074/127] Update queued files message to be pluralized --- src/routes/App/Rooms/Rooms.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/routes/App/Rooms/Rooms.js b/src/routes/App/Rooms/Rooms.js index 0b9aec85..aa645530 100644 --- a/src/routes/App/Rooms/Rooms.js +++ b/src/routes/App/Rooms/Rooms.js @@ -6,6 +6,7 @@ import { Plus, X } from 'preact-feather'; import { QueuedFiles } from '../QueuedFiles'; import Fab from '../../../components/Fab/Fab'; import Modal from '../../../components/Modal/Modal'; +import pluralize from '../../../utils/pluralize'; import './Rooms.scss'; @@ -78,7 +79,9 @@ function Rooms({ isOnline }) { { !!queuedFiles.length && (
    - Join a room to share the selected files + Join a room to share the selected + {' '} + {pluralize(queuedFiles.length, 'file', 'files')}
    ) } @@ -105,7 +108,11 @@ function Rooms({ isOnline }) { ) : ( <>
    - {queuedFiles.length ? 'Create a room using + button to share selected files' : 'Start by joining a room using the + button'} + { + queuedFiles.length ? + `Create a room using + button to share the selected ${pluralize(queuedFiles.length, 'file', 'files')}` : + 'Start by joining a room using the + button' + }

    Devices must join same room to share files with each other

    From 4a3fdb6a0653de802e9603d62e0751b74a8ae50f Mon Sep 17 00:00:00 2001 From: blenderskool Date: Wed, 12 Aug 2020 15:16:10 +0530 Subject: [PATCH 075/127] Add infinite progress spinner and fix text overflow Infinite progress spinner is shown when file meta data has been sent but the file transfer has not started. This avoids confusion to the user when there is no progress made for sometime after metadata is received --- src/routes/App/FileTransfer/FileTransfer.js | 36 ++++++++++++----- src/routes/App/FileTransfer/FileTransfer.scss | 40 +++++++++++++------ 2 files changed, 53 insertions(+), 23 deletions(-) diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index 17600370..a2131356 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -332,6 +332,30 @@ class FileTransfer extends PureComponent { } renderFile(file) { + let fileProgress = ( +
    + + + +
    + ); + + if (file.sent) { + fileProgress = ( +
    + +
    + ); + } else if (this.state.percentage) { + fileProgress = ( +
    + + + +
    + ); + } + return (
  • @@ -346,17 +370,7 @@ class FileTransfer extends PureComponent {

    - { - file.sent ? ( -
    - -
    - ) : ( - - - - ) - } + {fileProgress}
  • ); } diff --git a/src/routes/App/FileTransfer/FileTransfer.scss b/src/routes/App/FileTransfer/FileTransfer.scss index c9463f47..33550e7b 100644 --- a/src/routes/App/FileTransfer/FileTransfer.scss +++ b/src/routes/App/FileTransfer/FileTransfer.scss @@ -110,7 +110,9 @@ .info { text-align: left; - width: 85%; + flex: 1; + width: 60%; + margin-right: 1rem; h4 { font-weight: $font-normal; @@ -130,21 +132,24 @@ } .file-progress { - transform: rotateZ(-90deg) scaleY(-1); - margin-left: auto; - margin-right: 10px; - - circle { - stroke: $primary; - stroke-width: 2px; - stroke-dasharray: 69; - fill: #0B101C; + &.spinner { + animation: spin 1s linear infinite; + } + + svg { + transform: rotateZ(-90deg) scaleY(-1); + + circle { + stroke: $primary; + stroke-width: 2px; + stroke-dasharray: 69; + fill: #0B101C; + } } } .file-complete { - margin-left: auto; - margin-right: 13px; + margin-right: 3px; color: $primary; } @@ -160,6 +165,7 @@ } .files-container { + max-width: 49%; flex: 1; align-self: center; margin-top: -8rem; @@ -186,4 +192,14 @@ color: $secondary; margin: 0 0 2rem; } +} + +@keyframes spin { + from { + transform: rotateZ(0); + } + + to { + transform: rotateZ(360deg); + } } \ No newline at end of file From 3d912c8ad3a3c00453dcba82bc871e273bb4fe1d Mon Sep 17 00:00:00 2001 From: blenderskool Date: Wed, 12 Aug 2020 15:43:07 +0530 Subject: [PATCH 076/127] Update room name size limit to 20 characters including spaces Spaces are changed to hyphens in the url --- src/routes/App/FileTransfer/FileTransfer.js | 9 +++++---- src/routes/App/FileTransfer/FileTransfer.scss | 2 +- src/routes/App/Rooms/Rooms.js | 7 ++++--- src/routes/App/Rooms/Rooms.scss | 10 ++++++---- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/routes/App/FileTransfer/FileTransfer.js b/src/routes/App/FileTransfer/FileTransfer.js index a2131356..8f93755c 100644 --- a/src/routes/App/FileTransfer/FileTransfer.js +++ b/src/routes/App/FileTransfer/FileTransfer.js @@ -28,7 +28,8 @@ class FileTransfer extends PureComponent { constructor(props) { super(props); - const { room } = props; + let { room } = props; + room = room.replace(/-/g, ' '); const savedData = JSON.parse(localStorage.getItem('blaze')); this.client = { ...savedData.user, @@ -304,7 +305,7 @@ class FileTransfer extends PureComponent { navigator.share({ title: 'Share files', - text: `Join my room '${this.props.room}' on Blaze to share files`, + text: `Join my room '${this.client.room}' on Blaze to share files`, url: window.location.href, }); } @@ -404,7 +405,7 @@ class FileTransfer extends PureComponent { } } - render({ room, queuedFiles }, { percentage, peers, isP2P, files, filesQueued, errorModal, isSelectorEnabled }) { + render({ queuedFiles }, { percentage, peers, isP2P, files, filesQueued, errorModal, isSelectorEnabled }) { return (
    @@ -414,7 +415,7 @@ class FileTransfer extends PureComponent {

    - {room} + {this.client.room}

    ); From 1a808884337a6484b856b69431a97ffc47970265 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Thu, 27 Aug 2020 16:52:19 +0530 Subject: [PATCH 101/127] Add app page to nginx config --- client/nginx.conf | 4 ++++ nginx.conf | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/client/nginx.conf b/client/nginx.conf index 86fd7dbd..51e4c100 100644 --- a/client/nginx.conf +++ b/client/nginx.conf @@ -9,5 +9,9 @@ http { location / { try_files $uri $uri/ /index.html; } + + location /app { + try_files $uri $uri/ /app/index.html; + } } } \ No newline at end of file diff --git a/nginx.conf b/nginx.conf index 64550ecd..59afb1d4 100644 --- a/nginx.conf +++ b/nginx.conf @@ -10,6 +10,10 @@ http { try_files $uri $uri/ /index.html; } + location /app { + try_files $uri $uri/ /app/index.html; + } + location /ws { proxy_pass http://blaze-server:3030; proxy_http_version 1.1; From bb7eeb8d2c6b3cffe187a9b5af322e843469a5bb Mon Sep 17 00:00:00 2001 From: blenderskool Date: Thu, 27 Aug 2020 16:54:40 +0530 Subject: [PATCH 102/127] Add dockerignore and nowignore --- .dockerignore | 5 +++++ .nowignore | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 .dockerignore create mode 100644 .nowignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..37ea9738 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +**/node_modules +app.json +.now +.vercel +client/build diff --git a/.nowignore b/.nowignore new file mode 100644 index 00000000..0eca32bb --- /dev/null +++ b/.nowignore @@ -0,0 +1,4 @@ +node_modules/ +build/ +size-plugin.json +server/ \ No newline at end of file From 78cf635e50415de5a624500f7008015515ae1cea Mon Sep 17 00:00:00 2001 From: blenderskool Date: Thu, 27 Aug 2020 16:54:56 +0530 Subject: [PATCH 103/127] Update gitignore with vercel directories --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 673b9b22..85fde3ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ node_modules/ build/ -size-plugin.json \ No newline at end of file +size-plugin.json +.vercel/ +.now/ \ No newline at end of file From 92cddd8d768a0ae1f922ac5b822e832e1b8abf6b Mon Sep 17 00:00:00 2001 From: blenderskool Date: Thu, 27 Aug 2020 16:55:39 +0530 Subject: [PATCH 104/127] Update layers order in Dockerfiles --- client/Dockerfile | 13 ++++++++----- server/Dockerfile | 13 +++++++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/client/Dockerfile b/client/Dockerfile index 97f81118..0c2d5142 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -2,6 +2,11 @@ FROM node:10.16.3 AS base WORKDIR /app +COPY ./client/package*.json ./client/ + +WORKDIR /app/client +RUN npm install + ARG WS_HOST ARG WS_SIZE_LIMIT ARG TORRENT_SIZE_LIMIT @@ -10,11 +15,9 @@ ENV WS_HOST $WS_HOST ENV WS_SIZE_LIMIT $WS_SIZE_LIMIT ENV TORRENT_SIZE_LIMIT $TORRENT_SIZE_LIMIT -COPY ./client ./client -COPY ./common ./common -WORKDIR client -RUN npm install && \ - npm run build +COPY ./client . +COPY ./common ../common +RUN npm run build FROM nginx:alpine COPY ./client/nginx.conf /etc/nginx/nginx.conf diff --git a/server/Dockerfile b/server/Dockerfile index 4d0a173e..180447ad 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -1,14 +1,19 @@ FROM node:10.16.3 AS base WORKDIR /app -FROM base AS build -COPY ./server ./server -COPY ./common ./common -WORKDIR server +COPY ./server/package*.json ./server/ + +WORKDIR /app/server RUN npm install + +COPY ./server ./ +COPY ./common ../common + ENV NODE_ENV "production" ENV ORIGIN= ENV PORT= ENV WS_SIZE_LIMIT= + EXPOSE 3030 + CMD ["npm", "start"] \ No newline at end of file From b3082d40d6748a71db429296f4518b8658d9326a Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 28 Aug 2020 00:34:47 +0530 Subject: [PATCH 105/127] Add 404 page --- client/prerender-urls.json | 4 +++ .../images/illustrations/four-o-four.svg | 1 + .../src/routes/Pages/FourOFour/FourOFour.js | 15 +++++++++++ .../src/routes/Pages/FourOFour/FourOFour.scss | 27 +++++++++++++++++++ client/src/routes/Pages/Pages.js | 2 ++ 5 files changed, 49 insertions(+) create mode 100644 client/src/assets/images/illustrations/four-o-four.svg create mode 100644 client/src/routes/Pages/FourOFour/FourOFour.js create mode 100644 client/src/routes/Pages/FourOFour/FourOFour.scss diff --git a/client/prerender-urls.json b/client/prerender-urls.json index baec5eef..e68f0412 100644 --- a/client/prerender-urls.json +++ b/client/prerender-urls.json @@ -6,5 +6,9 @@ { "url": "/app/", "title": "App | Blaze" + }, + { + "url": "/404", + "title": "Page could not be found | Blaze" } ] \ No newline at end of file diff --git a/client/src/assets/images/illustrations/four-o-four.svg b/client/src/assets/images/illustrations/four-o-four.svg new file mode 100644 index 00000000..abf66fd7 --- /dev/null +++ b/client/src/assets/images/illustrations/four-o-four.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/routes/Pages/FourOFour/FourOFour.js b/client/src/routes/Pages/FourOFour/FourOFour.js new file mode 100644 index 00000000..71c017d9 --- /dev/null +++ b/client/src/routes/Pages/FourOFour/FourOFour.js @@ -0,0 +1,15 @@ +import { h } from 'preact'; +import FourOFourVis from '../../../assets/images/illustrations/four-o-four.svg'; + +import './FourOFour.scss'; + +const FourOFour = () => ( +
    + +

    Oops, this connection just broke into numbers!

    +

    Lets get you back to Blaze to start sharing some files

    + Go to home +
    +); + +export default FourOFour; \ No newline at end of file diff --git a/client/src/routes/Pages/FourOFour/FourOFour.scss b/client/src/routes/Pages/FourOFour/FourOFour.scss new file mode 100644 index 00000000..60004b64 --- /dev/null +++ b/client/src/routes/Pages/FourOFour/FourOFour.scss @@ -0,0 +1,27 @@ +@import '../../../scss/variables'; + +.four-o-four { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + height: 100vh; + + img { + max-width: 100%; + } + + h1 { + margin: 3rem 0 0; + } + + p { + color: $secondary; + font-size: 1.25rem; + } + + a { + margin-top: 2rem; + } +} \ No newline at end of file diff --git a/client/src/routes/Pages/Pages.js b/client/src/routes/Pages/Pages.js index c2909e65..9f94ed07 100644 --- a/client/src/routes/Pages/Pages.js +++ b/client/src/routes/Pages/Pages.js @@ -4,6 +4,7 @@ import { Router } from 'preact-router'; import Header from './components/Header/Header'; import Footer from './components/Footer/Footer'; import Home from './Home/Home'; +import FourOFour from './FourOFour/FourOFour'; import './Pages.scss'; @@ -14,6 +15,7 @@ export default function Pages() {
    +
    From 6baf47401b79c435b71c845105c3fe63b9537bad Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 28 Aug 2020 00:41:50 +0530 Subject: [PATCH 106/127] Fix pill margin and nav width before collapse --- client/src/routes/Pages/components/Header/Header.scss | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/client/src/routes/Pages/components/Header/Header.scss b/client/src/routes/Pages/components/Header/Header.scss index 493a599a..a8f5f394 100644 --- a/client/src/routes/Pages/components/Header/Header.scss +++ b/client/src/routes/Pages/components/Header/Header.scss @@ -23,6 +23,7 @@ $header-height: 85px; } .pill { + margin-top: 8px; margin-left: 15px; } @@ -78,7 +79,7 @@ $header-height: 85px; } } -@media screen and (min-width: 800px) { +@media screen and (min-width: 920px) { .page-header { padding: 0 60px; @@ -111,4 +112,10 @@ $header-height: 85px; } } +} + +@media screen and (max-width: $mobile-sm) { + .page-header .pill { + display: none; + } } \ No newline at end of file From a3f0fc34b3724001cc7d340c82bd7fd9ef8b3ec7 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 28 Aug 2020 09:02:17 +0530 Subject: [PATCH 107/127] Remove trailing spaces --- client/src/utils/fileShare.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/utils/fileShare.js b/client/src/utils/fileShare.js index 6694c279..71111be8 100644 --- a/client/src/utils/fileShare.js +++ b/client/src/utils/fileShare.js @@ -16,7 +16,7 @@ class FileShare { { urls: ['stun:stun.l.google.com:19305', 'stun:stun1.l.google.com:19305'] } - ] + ] } } }); From 911fb2b60512a4f76a4ce97cb6c9b02389ea7cde Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 28 Aug 2020 09:26:48 +0530 Subject: [PATCH 108/127] Add how it works page --- client/prerender-urls.json | 4 + client/src/assets/images/working/install.png | Bin 0 -> 72805 bytes .../src/assets/images/working/join-room.png | Bin 0 -> 134554 bytes .../src/assets/images/working/send-file.png | Bin 0 -> 119270 bytes client/src/routes/Pages/Pages.js | 2 + client/src/routes/Pages/Working/Working.js | 88 ++++++++++++++++++ client/src/routes/Pages/Working/Working.scss | 83 +++++++++++++++++ .../routes/Pages/components/Header/Header.js | 2 +- .../Pages/components/Header/Header.scss | 2 +- 9 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 client/src/assets/images/working/install.png create mode 100644 client/src/assets/images/working/join-room.png create mode 100644 client/src/assets/images/working/send-file.png create mode 100644 client/src/routes/Pages/Working/Working.js create mode 100644 client/src/routes/Pages/Working/Working.scss diff --git a/client/prerender-urls.json b/client/prerender-urls.json index e68f0412..9bd61887 100644 --- a/client/prerender-urls.json +++ b/client/prerender-urls.json @@ -10,5 +10,9 @@ { "url": "/404", "title": "Page could not be found | Blaze" + }, + { + "url": "/how-it-works", + "title": "How it works | Blaze" } ] \ No newline at end of file diff --git a/client/src/assets/images/working/install.png b/client/src/assets/images/working/install.png new file mode 100644 index 0000000000000000000000000000000000000000..600be039aae543b7aca97330c9ecefa1e6dbbd4a GIT binary patch literal 72805 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 z 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

    gz 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

    mLuTWPyu@vJJK_Nsmn=$`ZIGHo8OwN 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 -OmA{&ZR&n_`ASLV%eit#+7`>{^-XwTe%0FiLt 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
    YF}5(38mN3JdSNJ*79 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 +

    @@ -65,12 +65,12 @@ const Working = () => (

    Next steps

    If you enjoyed using Blaze, you can add Blaze to your home screen! Doing this - not only makes Blaze easy to access, but also allows it shows up in the share tray when you are sharing something from other apps + not only makes Blaze easy to access but also allows it shows up in the share tray when you are sharing something from other apps using button.

    - Since Blaze is an open source project, I would love to hear your thoughts and how Blaze can be improved. If you find this project - useful, considering giving + Since Blaze is an open-source project, I would love to hear your thoughts and how Blaze can be improved. If you find this project + useful, consider giving Blaze a star on GitHub!

    From 38aba9f52bb1bd675e708c07a891bf14d105e59e Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 28 Aug 2020 16:34:06 +0530 Subject: [PATCH 111/127] Update packages to fix security vulnerabilities --- client/package-lock.json | 14 ++++---------- package-lock.json | 6 +++--- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index a4b7315f..40c79148 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -3557,9 +3557,9 @@ "dev": true }, "copy-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", + "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", "dev": true, "requires": { "cacache": "^12.0.3", @@ -3572,7 +3572,7 @@ "normalize-path": "^3.0.0", "p-limit": "^2.2.1", "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", + "serialize-javascript": "^4.0.0", "webpack-log": "^2.0.0" }, "dependencies": { @@ -3666,12 +3666,6 @@ "ajv-keywords": "^3.1.0" } }, - "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true - }, "ssri": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", diff --git a/package-lock.json b/package-lock.json index c919e78a..fcb16d1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -157,9 +157,9 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "normalize-package-data": { "version": "2.5.0", From add4202e4a0d6d373fd3e475fb4aadfcba2bb9ea Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 28 Aug 2020 16:40:38 +0530 Subject: [PATCH 112/127] Update link to LICENSE --- client/src/routes/Pages/components/Footer/Footer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/routes/Pages/components/Footer/Footer.js b/client/src/routes/Pages/components/Footer/Footer.js index b813872e..acc838b1 100644 --- a/client/src/routes/Pages/components/Footer/Footer.js +++ b/client/src/routes/Pages/components/Footer/Footer.js @@ -20,7 +20,7 @@ const Footer = () => ( Released under the - MIT License + MIT License
    Designed & Developed in 🇮🇳 From fe230c3851adf77176c2cb931e38bcbe480895ec Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 28 Aug 2020 23:19:05 +0530 Subject: [PATCH 113/127] Update conf directory --- docker-compose.yml | 2 +- nginx.conf => nginx/compose-nginx.conf | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename nginx.conf => nginx/compose-nginx.conf (100%) diff --git a/docker-compose.yml b/docker-compose.yml index 7fa5ff0d..83df5a45 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,4 +16,4 @@ services: depends_on: - blaze-server volumes: - - ./nginx.conf:/etc/nginx/nginx.conf \ No newline at end of file + - ./nginx/compose-nginx.conf:/etc/nginx/nginx.conf \ No newline at end of file diff --git a/nginx.conf b/nginx/compose-nginx.conf similarity index 100% rename from nginx.conf rename to nginx/compose-nginx.conf From 4d4af7bb7a0252e782c6e454e3c14216836551f2 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Fri, 28 Aug 2020 23:20:21 +0530 Subject: [PATCH 114/127] Update heroku button configuration --- Dockerfile | 45 ++++++++++++++++++++++++++++++++++++++ README.md | 10 +++++++-- app.json | 5 +++-- heroku.yml | 3 +++ nginx/image-nginx.template | 27 +++++++++++++++++++++++ 5 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 Dockerfile create mode 100644 heroku.yml create mode 100644 nginx/image-nginx.template diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..a4f9d554 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,45 @@ +FROM node:10.16.3 AS base + +WORKDIR /app + +COPY ./client/package*.json ./client/ + +WORKDIR /app/client +RUN npm install + +ARG WS_HOST +ARG WS_SIZE_LIMIT +ARG TORRENT_SIZE_LIMIT + +ENV WS_HOST $WS_HOST +ENV WS_SIZE_LIMIT $WS_SIZE_LIMIT +ENV TORRENT_SIZE_LIMIT $TORRENT_SIZE_LIMIT + +COPY ./client . +COPY ./common ../common +RUN npm run build + + +FROM nginx:alpine + +# Installing node and npm +RUN apk add --no-cache --repository http://nl.alpinelinux.org/alpine/edge/main libuv \ + && apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.9/main/ nodejs=10.19.0-r0 npm=10.19.0-r0 + +WORKDIR /app + +COPY ./server/package*.json ./server/ + +WORKDIR /app/server +RUN npm install + +COPY ./server . +COPY ./common ../common +COPY ./package*.json ../ + +WORKDIR / +COPY ./nginx/image-nginx.template /etc/nginx/nginx.template +COPY --from=base /app/client/build /etc/nginx/html + +WORKDIR /app +CMD ["sh", "-c", "envsubst < /etc/nginx/nginx.template > /etc/nginx/nginx.conf && nginx -g 'daemon off' & npm run start:server"] \ No newline at end of file diff --git a/README.md b/README.md index afc9a827..32ff6994 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ Read more on [Deploying on your own server](#deploying-on-your-own-server) ## Project structure -The project is divided into three parts - backend, frontend and common. +The project is divided structured into following directories - backend, frontend, common and nginx. ### Backend All the backend(or server) related source code resides under the `server` directory. It is built on Node.js with [express](http://expressjs.com/) and [ws](https://www.npmjs.com/package/ws) library for WebSockets. Thin wrappers have been created for easier interfacing with sockets. @@ -88,6 +88,11 @@ The frontend source code is in the `client` directory. The dependencies of the f ### Common The `common` directory contains javascript modules that are **shared by both frontend and backend**. These include constants in `constants.js` file and utility functions in `utils` sub-directory. +### Nginx +The `nginx` directory contains configuration files for nginx to be used in Docker containers. These usually don't change much. +- `compose-nginx.conf` - Used when the project is run using docker-compose. +- `image-nginx.template` - Used when the project is run on a single container from higher level Docker image. + ### Build process The build process for the frontend internally setup with webpack via preact-cli. Overrides can be made in `preact.config.js` file. Following environment variables can be set in the build process: @@ -104,9 +109,10 @@ The build process for the frontend internally setup with webpack via preact-cli. -------------------------------------------------------------------------------------------------------------------------------- ## Deploying on your own server -Blaze can be easily deployed on your own server using Docker. The frontend and the backend is completely decoupled from each other. Following two Docker images are available: +Blaze can be easily deployed on your own server using Docker. The frontend and the backend is completely decoupled from each other. Following Docker images are available: - Blaze Server: This is the backend Node.js server that is used for WebSockets. The environment variables listed for the server above can be passed to the container. It exposes port `3030`. - Blaze Client: This is the frontend progressive web app of Blaze used by clients for sharing files. Nginx is used as a web server for this statically generated frontend. The environment variables listed above can be passed as ARGS while **building the image**. The frontend container exposes port `80`. +- Blaze: This is a higher level image that includes both Blaze Server and Blaze Client images above. It must be used when docker-compose is not available in the environment, or there is a limit to run only a single container. docker-compose must be used to run Blaze in other cases which is explained in next section. ### Using docker-compose A `docker-compose.yml` file is present at the root of this project which runs both the server and client containers and sets up a proxy for WebSocket connections on the frontend in Nginx configuration. To run using docker-compose: diff --git a/app.json b/app.json index 55b5e17e..3e6cf370 100644 --- a/app.json +++ b/app.json @@ -1,7 +1,8 @@ { "name": "Blaze", - "description": "A file sharing web app using WebSockets and WebRTC", + "description": "A file sharing web app using WebTorrent and WebSockets", "repository": "https://github.com/blenderskool/blaze", "logo": "https://github.com/blenderskool/blaze/raw/master/static/images/apple-touch-icon-152x152.png", - "keywords": ["productivity", "node", "websockets", "webrtc", "socketio", "svelte", "express", "file-sharing"] + "keywords": ["productivity", "node", "websockets", "webrtc", "socketio", "svelte", "express", "file-sharing"], + "stack": "container" } \ No newline at end of file diff --git a/heroku.yml b/heroku.yml new file mode 100644 index 00000000..2b8f79bb --- /dev/null +++ b/heroku.yml @@ -0,0 +1,3 @@ +build: + docker: + web: Dockerfile \ No newline at end of file diff --git a/nginx/image-nginx.template b/nginx/image-nginx.template new file mode 100644 index 00000000..2daa4f95 --- /dev/null +++ b/nginx/image-nginx.template @@ -0,0 +1,27 @@ +events { + worker_connections 1024; +} + +http { + index index.html; + server { + listen ${PORT}; + + include /etc/nginx/mime.types; + location / { + try_files $uri $uri/ /index.html; + } + + location /app { + try_files $uri $uri/ /app/index.html; + } + + location /ws { + proxy_pass http://127.0.0.1:3030; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + } + } +} \ No newline at end of file From a3a68eba5b7403cf89df709f49c0c9d9bc59cb1c Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 29 Aug 2020 00:14:27 +0530 Subject: [PATCH 115/127] Fix environment variable substitution in template file --- Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index a4f9d554..508f4743 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,9 @@ FROM nginx:alpine RUN apk add --no-cache --repository http://nl.alpinelinux.org/alpine/edge/main libuv \ && apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.9/main/ nodejs=10.19.0-r0 npm=10.19.0-r0 +COPY ./nginx/image-nginx.template /etc/nginx/nginx.template +COPY --from=base /app/client/build /etc/nginx/html + WORKDIR /app COPY ./server/package*.json ./server/ @@ -37,9 +40,6 @@ COPY ./server . COPY ./common ../common COPY ./package*.json ../ -WORKDIR / -COPY ./nginx/image-nginx.template /etc/nginx/nginx.template -COPY --from=base /app/client/build /etc/nginx/html +EXPOSE 3030 -WORKDIR /app -CMD ["sh", "-c", "envsubst < /etc/nginx/nginx.template > /etc/nginx/nginx.conf && nginx -g 'daemon off' & npm run start:server"] \ No newline at end of file +CMD ["sh", "-c", "envsubst '$PORT' < /etc/nginx/nginx.template > /etc/nginx/nginx.conf && nginx -g 'daemon off;' & PORT=3030 npm run start"] \ No newline at end of file From 196f1cfdd966a409b4c712d0b21ef49af687952b Mon Sep 17 00:00:00 2001 From: blenderskool Date: Sat, 29 Aug 2020 00:24:48 +0530 Subject: [PATCH 116/127] Update app information --- app.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app.json b/app.json index 3e6cf370..c5e380e9 100644 --- a/app.json +++ b/app.json @@ -3,6 +3,7 @@ "description": "A file sharing web app using WebTorrent and WebSockets", "repository": "https://github.com/blenderskool/blaze", "logo": "https://github.com/blenderskool/blaze/raw/master/static/images/apple-touch-icon-152x152.png", - "keywords": ["productivity", "node", "websockets", "webrtc", "socketio", "svelte", "express", "file-sharing"], - "stack": "container" + "keywords": ["productivity", "node", "websockets", "webtorrent", "preact", "peer-to-peer", "express", "file-sharing"], + "stack": "container", + "website": "https://blaze.now.sh" } \ No newline at end of file From 182591decc8f4d5f44fac8b3b6a0bc3018a25552 Mon Sep 17 00:00:00 2001 From: Akash Hamirwasia Date: Mon, 31 Aug 2020 17:37:25 +0530 Subject: [PATCH 117/127] Add tested browsers list --- .../assets/images/browser-icons/chrome.svg | 1 + .../src/assets/images/browser-icons/edge.svg | 1 + .../assets/images/browser-icons/firefox.svg | 3 +++ .../assets/images/browser-icons/safari.svg | 1 + client/src/routes/Pages/Working/Working.js | 25 +++++++++++++++++++ client/src/routes/Pages/Working/Working.scss | 22 ++++++++++++++++ 6 files changed, 53 insertions(+) create mode 100644 client/src/assets/images/browser-icons/chrome.svg create mode 100644 client/src/assets/images/browser-icons/edge.svg create mode 100644 client/src/assets/images/browser-icons/firefox.svg create mode 100644 client/src/assets/images/browser-icons/safari.svg diff --git a/client/src/assets/images/browser-icons/chrome.svg b/client/src/assets/images/browser-icons/chrome.svg new file mode 100644 index 00000000..5c6a94ed --- /dev/null +++ b/client/src/assets/images/browser-icons/chrome.svg @@ -0,0 +1 @@ +ionicons-v5_logos \ No newline at end of file diff --git a/client/src/assets/images/browser-icons/edge.svg b/client/src/assets/images/browser-icons/edge.svg new file mode 100644 index 00000000..38aa1a89 --- /dev/null +++ b/client/src/assets/images/browser-icons/edge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/images/browser-icons/firefox.svg b/client/src/assets/images/browser-icons/firefox.svg new file mode 100644 index 00000000..1e4f4bcb --- /dev/null +++ b/client/src/assets/images/browser-icons/firefox.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/images/browser-icons/safari.svg b/client/src/assets/images/browser-icons/safari.svg new file mode 100644 index 00000000..6accef80 --- /dev/null +++ b/client/src/assets/images/browser-icons/safari.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/routes/Pages/Working/Working.js b/client/src/routes/Pages/Working/Working.js index 0e34d2c7..e4ac44e1 100644 --- a/client/src/routes/Pages/Working/Working.js +++ b/client/src/routes/Pages/Working/Working.js @@ -3,6 +3,10 @@ import { Share2, Zap } from 'preact-feather'; import joinRoom from '../../../assets/images/working/join-room.png'; import sendFile from '../../../assets/images/working/send-file.png'; import install from '../../../assets/images/working/install.png'; +import chrome from '../../../assets/images/browser-icons/chrome.svg'; +import firefox from '../../../assets/images/browser-icons/firefox.svg'; +import edge from '../../../assets/images/browser-icons/edge.svg'; +import safari from '../../../assets/images/browser-icons/safari.svg'; import './Working.scss'; @@ -73,6 +77,27 @@ const Working = () => ( useful, consider giving Blaze a star on GitHub!

    +

    + Blaze has been tested on: +

      +
    • + + Google Chrome +
    • +
    • + + Microsoft Edge +
    • +
    • + + Firefox Browser +
    • +
    • + + Safari +
    • +
    +

    Adding Blaze to home screen diff --git a/client/src/routes/Pages/Working/Working.scss b/client/src/routes/Pages/Working/Working.scss index 46101f8e..8ffb256b 100644 --- a/client/src/routes/Pages/Working/Working.scss +++ b/client/src/routes/Pages/Working/Working.scss @@ -44,6 +44,28 @@ } } + .browsers { + list-style: none; + display: flex; + flex-wrap: wrap; + padding: 0; + margin-top: 12px; + + li { + user-select: none; + display: flex; + margin: 0 20px 20px 0; + align-items: center; + + img { + width: 32px; + height: 32px; + opacity: 0.8; + margin-right: 4px; + } + } + } + @media screen and (min-width: $tablet) { .body-wrapper { From b1d63d79ba9574ecca11b87cb60653282562cf49 Mon Sep 17 00:00:00 2001 From: Akash Hamirwasia Date: Mon, 31 Aug 2020 17:45:20 +0530 Subject: [PATCH 118/127] Add nginx directory to .nowignore --- .nowignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.nowignore b/.nowignore index 0eca32bb..4a277a8f 100644 --- a/.nowignore +++ b/.nowignore @@ -1,4 +1,5 @@ node_modules/ build/ size-plugin.json -server/ \ No newline at end of file +server/ +nginx/ \ No newline at end of file From e2d47d1c7ae07b556fdc44be4f446b7930daf0e8 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Thu, 3 Sep 2020 00:02:20 +0530 Subject: [PATCH 119/127] Add site preview and meta tags --- client/src/assets/images/site-preview.jpg | Bin 0 -> 86794 bytes client/src/template.html | 11 +++++++++++ 2 files changed, 11 insertions(+) create mode 100644 client/src/assets/images/site-preview.jpg diff --git a/client/src/assets/images/site-preview.jpg b/client/src/assets/images/site-preview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1399e992d3e86dd39e8fb83a18dde70306c59df8 GIT binary patch literal 86794 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 Zmg86bMy%|{5JD83+crI9{{Zz*|Jkl`lk@-p literal 0 HcmV?d00001 diff --git a/client/src/template.html b/client/src/template.html index dd01f3eb..498edbb3 100644 --- a/client/src/template.html +++ b/client/src/template.html @@ -9,6 +9,17 @@ + + + + + + + + + + + From a7c8752480a2e5831cc9ecbe16fb7a7114e38149 Mon Sep 17 00:00:00 2001 From: blenderskool Date: Thu, 3 Sep 2020 00:51:02 +0530 Subject: [PATCH 120/127] Update DigitalOcean link --- README.md | 20 +++++++++---------- .../routes/Pages/components/Footer/Footer.js | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 32ff6994..375d6d71 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Blaze - Fast peer to peer file sharing web app ⚡ | Product Hunt Embed - + Digital Ocean

    @@ -45,6 +45,7 @@ Read more about how Blaze works at a basic level in this [Medium article](https: Read more on [Deploying on your own server](#deploying-on-your-own-server) ## Table of Contents +- [Sponsors](#sponsors) - [Project structure](#project-structure) - [Backend](#backend) - [Frontend](#frontend) @@ -53,7 +54,6 @@ Read more on [Deploying on your own server](#deploying-on-your-own-server) - [Build process](#build-process) - [Deploying on your own server](#deploying-on-your-own-server) - [Using docker-compose](#using-docker-compose) -- [Sponsors](#sponsors) - [Contributing](#contributing) - [Running Blaze in production](#running-blaze-in-production) - [Building the frontend](#building-the-frontend) @@ -61,6 +61,14 @@ Read more on [Deploying on your own server](#deploying-on-your-own-server) - [License](#license) +## Sponsors +Blaze is sponsored by: +

    + + + +

    + ## Project structure The project is divided structured into following directories - backend, frontend, common and nginx. @@ -123,14 +131,6 @@ cd blaze docker-compose up -d ``` -## Sponsors -Blaze is sponsored by: -

    - - - -

    - ## Contributing Documentation on contributing can be found in [CONTRIBUTING.md](https://github.com/blenderskool/blaze/blob/master/CONTRIBUTING.md) diff --git a/client/src/routes/Pages/components/Footer/Footer.js b/client/src/routes/Pages/components/Footer/Footer.js index acc838b1..179634cc 100644 --- a/client/src/routes/Pages/components/Footer/Footer.js +++ b/client/src/routes/Pages/components/Footer/Footer.js @@ -5,7 +5,7 @@ import './Footer.scss'; const Footer = () => (