From 355a02ea3b70c811e4cc51fc95faeb754489c784 Mon Sep 17 00:00:00 2001 From: aniket-engg Date: Mon, 30 Dec 2019 12:38:22 +0530 Subject: [PATCH] basic switch to ts types introduced suggested changes and worker types more types more types and code style update fix to run compilation very first time after plugin activation --- remix-solidity/index.js | 7 - remix-solidity/index.ts | 2 + remix-solidity/package-lock.json | 797 +++--------------- remix-solidity/package.json | 13 +- .../{compiler-input.js => compiler-input.ts} | 12 +- ...{compiler-worker.js => compiler-worker.ts} | 36 +- remix-solidity/src/compiler/compiler.js | 390 --------- remix-solidity/src/compiler/compiler.ts | 411 +++++++++ remix-solidity/src/compiler/txHelper.js | 33 - remix-solidity/src/compiler/txHelper.ts | 40 + remix-solidity/src/compiler/types.ts | 481 +++++++++++ remix-solidity/tsconfig.json | 25 + 12 files changed, 1118 insertions(+), 1129 deletions(-) delete mode 100644 remix-solidity/index.js create mode 100644 remix-solidity/index.ts rename remix-solidity/src/compiler/{compiler-input.js => compiler-input.ts} (71%) rename remix-solidity/src/compiler/{compiler-worker.js => compiler-worker.ts} (52%) delete mode 100644 remix-solidity/src/compiler/compiler.js create mode 100644 remix-solidity/src/compiler/compiler.ts delete mode 100644 remix-solidity/src/compiler/txHelper.js create mode 100644 remix-solidity/src/compiler/txHelper.ts create mode 100644 remix-solidity/src/compiler/types.ts create mode 100644 remix-solidity/tsconfig.json diff --git a/remix-solidity/index.js b/remix-solidity/index.js deleted file mode 100644 index 2aa1ea036e..0000000000 --- a/remix-solidity/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const Compiler = require('./src/compiler/compiler') -const CompilerInput = require('./src/compiler/compiler-input') - -module.exports = { - Compiler: Compiler, - CompilerInput: CompilerInput -} diff --git a/remix-solidity/index.ts b/remix-solidity/index.ts new file mode 100644 index 0000000000..f62854b786 --- /dev/null +++ b/remix-solidity/index.ts @@ -0,0 +1,2 @@ +export { Compiler } from './src/compiler/compiler' +export { default as CompilerInput} from './src/compiler/compiler-input' diff --git a/remix-solidity/package-lock.json b/remix-solidity/package-lock.json index 1eec736ca3..484ac3fcde 100644 --- a/remix-solidity/package-lock.json +++ b/remix-solidity/package-lock.json @@ -1,16 +1,11 @@ { - "name": "remix-solidity", - "version": "0.3.21", - "lockfileVersion": 1, "requires": true, "lockfileVersion": 1, - "requires": true, "dependencies": { "@babel/code-frame": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, "requires": { "@babel/highlight": "^7.0.0" } @@ -19,7 +14,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.4.tgz", "integrity": "sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ==", - "dev": true, "requires": { "@babel/code-frame": "^7.5.5", "@babel/generator": "^7.7.4", @@ -41,7 +35,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", - "dev": true, "requires": { "@babel/types": "^7.7.4", "jsesc": "^2.5.1", @@ -53,7 +46,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz", "integrity": "sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==", - "dev": true, "requires": { "@babel/types": "^7.7.4" } @@ -62,7 +54,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz", "integrity": "sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==", - "dev": true, "requires": { "@babel/helper-explode-assignable-expression": "^7.7.4", "@babel/types": "^7.7.4" @@ -72,7 +63,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz", "integrity": "sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==", - "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.7.4", "@babel/traverse": "^7.7.4", @@ -83,7 +73,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz", "integrity": "sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==", - "dev": true, "requires": { "@babel/helper-regex": "^7.4.4", "regexpu-core": "^4.6.0" @@ -93,7 +82,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz", "integrity": "sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==", - "dev": true, "requires": { "@babel/helper-function-name": "^7.7.4", "@babel/types": "^7.7.4", @@ -104,7 +92,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz", "integrity": "sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==", - "dev": true, "requires": { "@babel/traverse": "^7.7.4", "@babel/types": "^7.7.4" @@ -114,7 +101,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", - "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.7.4", "@babel/template": "^7.7.4", @@ -125,7 +111,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", - "dev": true, "requires": { "@babel/types": "^7.7.4" } @@ -134,7 +119,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz", "integrity": "sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==", - "dev": true, "requires": { "@babel/types": "^7.7.4" } @@ -143,7 +127,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz", "integrity": "sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==", - "dev": true, "requires": { "@babel/types": "^7.7.4" } @@ -152,7 +135,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz", "integrity": "sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==", - "dev": true, "requires": { "@babel/types": "^7.7.4" } @@ -161,7 +143,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.4.tgz", "integrity": "sha512-ehGBu4mXrhs0FxAqN8tWkzF8GSIGAiEumu4ONZ/hD9M88uHcD+Yu2ttKfOCgwzoesJOJrtQh7trI5YPbRtMmnA==", - "dev": true, "requires": { "@babel/helper-module-imports": "^7.7.4", "@babel/helper-simple-access": "^7.7.4", @@ -175,7 +156,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz", "integrity": "sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==", - "dev": true, "requires": { "@babel/types": "^7.7.4" } @@ -183,14 +163,12 @@ "@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==", - "dev": true + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" }, "@babel/helper-regex": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", - "dev": true, "requires": { "lodash": "^4.17.13" } @@ -199,7 +177,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz", "integrity": "sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.7.4", "@babel/helper-wrap-function": "^7.7.4", @@ -212,7 +189,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz", "integrity": "sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==", - "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.7.4", "@babel/helper-optimise-call-expression": "^7.7.4", @@ -224,7 +200,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz", "integrity": "sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==", - "dev": true, "requires": { "@babel/template": "^7.7.4", "@babel/types": "^7.7.4" @@ -234,7 +209,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", - "dev": true, "requires": { "@babel/types": "^7.7.4" } @@ -243,7 +217,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz", "integrity": "sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==", - "dev": true, "requires": { "@babel/helper-function-name": "^7.7.4", "@babel/template": "^7.7.4", @@ -255,7 +228,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", - "dev": true, "requires": { "@babel/template": "^7.7.4", "@babel/traverse": "^7.7.4", @@ -266,7 +238,6 @@ "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", - "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -276,14 +247,12 @@ "@babel/parser": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.4.tgz", - "integrity": "sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==", - "dev": true + "integrity": "sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==" }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz", "integrity": "sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-remap-async-to-generator": "^7.7.4", @@ -294,7 +263,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz", "integrity": "sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-dynamic-import": "^7.7.4" @@ -304,7 +272,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz", "integrity": "sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-json-strings": "^7.7.4" @@ -314,7 +281,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz", "integrity": "sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-object-rest-spread": "^7.7.4" @@ -324,7 +290,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz", "integrity": "sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-optional-catch-binding": "^7.7.4" @@ -334,7 +299,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.4.tgz", "integrity": "sha512-cHgqHgYvffluZk85dJ02vloErm3Y6xtH+2noOBOJ2kXOJH3aVCDnj5eR/lVNlTnYu4hndAPJD3rTFjW3qee0PA==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" @@ -344,7 +308,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz", "integrity": "sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -353,7 +316,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz", "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -362,7 +324,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz", "integrity": "sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -371,7 +332,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -380,7 +340,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz", "integrity": "sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -389,7 +348,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz", "integrity": "sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -398,7 +356,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz", "integrity": "sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -407,7 +364,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz", "integrity": "sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==", - "dev": true, "requires": { "@babel/helper-module-imports": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", @@ -418,7 +374,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz", "integrity": "sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -427,7 +382,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz", "integrity": "sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "lodash": "^4.17.13" @@ -437,7 +391,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz", "integrity": "sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.7.4", "@babel/helper-define-map": "^7.7.4", @@ -453,7 +406,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz", "integrity": "sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -462,7 +414,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz", "integrity": "sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -471,7 +422,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.4.tgz", "integrity": "sha512-mk0cH1zyMa/XHeb6LOTXTbG7uIJ8Rrjlzu91pUx/KS3JpcgaTDwMS8kM+ar8SLOvlL2Lofi4CGBAjCo3a2x+lw==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" @@ -481,7 +431,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz", "integrity": "sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -490,7 +439,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz", "integrity": "sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==", - "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" @@ -500,7 +448,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz", "integrity": "sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -509,7 +456,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz", "integrity": "sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==", - "dev": true, "requires": { "@babel/helper-function-name": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" @@ -519,7 +465,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-instanceof/-/plugin-transform-instanceof-7.0.0-beta.53.tgz", "integrity": "sha1-WC2CtyUYggGtDiIx8fzpTHRaLAY=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" }, @@ -527,8 +472,7 @@ "@babel/helper-plugin-utils": { "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz", - "integrity": "sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0=", - "dev": true + "integrity": "sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0=" } } }, @@ -536,7 +480,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz", "integrity": "sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -545,7 +488,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz", "integrity": "sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -554,7 +496,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.4.tgz", "integrity": "sha512-/542/5LNA18YDtg1F+QHvvUSlxdvjZoD/aldQwkq+E3WCkbEjNSN9zdrOXaSlfg3IfGi22ijzecklF/A7kVZFQ==", - "dev": true, "requires": { "@babel/helper-module-transforms": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", @@ -565,7 +506,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.4.tgz", "integrity": "sha512-k8iVS7Jhc367IcNF53KCwIXtKAH7czev866ThsTgy8CwlXjnKZna2VHwChglzLleYrcHz1eQEIJlGRQxB53nqA==", - "dev": true, "requires": { "@babel/helper-module-transforms": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", @@ -577,7 +517,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz", "integrity": "sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw==", - "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", @@ -588,7 +527,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz", "integrity": "sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw==", - "dev": true, "requires": { "@babel/helper-module-transforms": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" @@ -598,7 +536,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz", "integrity": "sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.7.4" } @@ -607,7 +544,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz", "integrity": "sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -616,7 +552,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.7.4.tgz", "integrity": "sha512-0TpeUlnhQDwKxPLTIckdaWt46L2s61c/5w5snw1OUod5ehOJywZD98Ha3dFHVjeqkfOFtOTH7cqxddjxUuvcmg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -625,7 +560,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz", "integrity": "sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-replace-supers": "^7.7.4" @@ -635,7 +569,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.4.tgz", "integrity": "sha512-VJwhVePWPa0DqE9vcfptaJSzNDKrWU/4FbYCjZERtmqEs05g3UMXnYMZoXja7JAJ7Y7sPZipwm/pGApZt7wHlw==", - "dev": true, "requires": { "@babel/helper-call-delegate": "^7.7.4", "@babel/helper-get-function-arity": "^7.7.4", @@ -646,7 +579,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz", "integrity": "sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -655,7 +587,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.4.tgz", "integrity": "sha512-e7MWl5UJvmPEwFJTwkBlPmqixCtr9yAASBqff4ggXTNicZiwbF8Eefzm6NVgfiBp7JdAGItecnctKTgH44q2Jw==", - "dev": true, "requires": { "regenerator-transform": "^0.14.0" } @@ -664,7 +595,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz", "integrity": "sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -673,7 +603,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz", "integrity": "sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -682,7 +611,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz", "integrity": "sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -691,7 +619,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz", "integrity": "sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.0.0" @@ -701,7 +628,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz", "integrity": "sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" @@ -711,7 +637,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz", "integrity": "sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -720,7 +645,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz", "integrity": "sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" @@ -730,7 +654,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.4.tgz", "integrity": "sha512-Dg+ciGJjwvC1NIe/DGblMbcGq1HOtKbw8RLl4nIjlfcILKEOkWT/vRqPpumswABEBVudii6dnVwrBtzD7ibm4g==", - "dev": true, "requires": { "@babel/helper-module-imports": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", @@ -788,8 +711,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==" } } }, @@ -797,7 +719,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/preset-es2015/-/preset-es2015-7.0.0-beta.53.tgz", "integrity": "sha1-SYL6GUjbEJN2Yoj2mRPizjYDEeQ=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53", "@babel/plugin-transform-arrow-functions": "7.0.0-beta.53", @@ -830,7 +751,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.53.tgz", "integrity": "sha1-mA0VYLhjV1v1o3eSUDfgEy71kh4=", - "dev": true, "requires": { "@babel/highlight": "7.0.0-beta.53" } @@ -839,7 +759,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.53.tgz", "integrity": "sha1-uMrXLFcr4yNK/94ivm2sxCUOA0s=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53", "jsesc": "^2.5.1", @@ -852,7 +771,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.53.tgz", "integrity": "sha1-WZYGKDdcvu+WoH7f4co4t1bwGqg=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53" } @@ -861,7 +779,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.53.tgz", "integrity": "sha1-ld6Lq9A/nmz08rVkoDhwjBOP/jE=", - "dev": true, "requires": { "@babel/helper-hoist-variables": "7.0.0-beta.53", "@babel/traverse": "7.0.0-beta.53", @@ -872,7 +789,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.53.tgz", "integrity": "sha1-SOniJlRTeHl1BD76qx7a0jnqlpU=", - "dev": true, "requires": { "@babel/helper-function-name": "7.0.0-beta.53", "@babel/types": "7.0.0-beta.53", @@ -883,7 +799,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.53.tgz", "integrity": "sha1-USgEro6cvOVDHr6hnkdijC7WU/I=", - "dev": true, "requires": { "@babel/helper-get-function-arity": "7.0.0-beta.53", "@babel/template": "7.0.0-beta.53", @@ -894,7 +809,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.53.tgz", "integrity": "sha1-3tiKsp+bHbYch9G7jTijXdp3neY=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53" } @@ -903,7 +817,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.53.tgz", "integrity": "sha1-TCfjuHP6CcWtbpPrQHBMIA+EE3w=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53" } @@ -912,7 +825,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.53.tgz", "integrity": "sha1-D7Dviy07kD0cO/Qm2kp0V14BnOQ=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53" } @@ -921,7 +833,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.53.tgz", "integrity": "sha1-5zXmqjClBLD52Fw4ptRwqfSqgdk=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53", "lodash": "^4.17.5" @@ -931,7 +842,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.53.tgz", "integrity": "sha1-e6IUzcyPhiPy0Xl96v8f80mqzhM=", - "dev": true, "requires": { "@babel/helper-module-imports": "7.0.0-beta.53", "@babel/helper-simple-access": "7.0.0-beta.53", @@ -945,7 +855,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.53.tgz", "integrity": "sha1-j8eO9MD2n4uzu980zSMsIBIEFMg=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53" } @@ -953,14 +862,12 @@ "@babel/helper-plugin-utils": { "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz", - "integrity": "sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0=", - "dev": true + "integrity": "sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0=" }, "@babel/helper-regex": { "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.53.tgz", "integrity": "sha1-bp0hl7Vid54iVWWUaumoXCFbIl4=", - "dev": true, "requires": { "lodash": "^4.17.5" } @@ -969,7 +876,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.53.tgz", "integrity": "sha1-M5tb3BAilElbGifFWBMjBuG3vKc=", - "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "7.0.0-beta.53", "@babel/helper-optimise-call-expression": "7.0.0-beta.53", @@ -981,7 +887,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.53.tgz", "integrity": "sha1-cvbbmr5C+GgfpvAo79WdgVRHUrM=", - "dev": true, "requires": { "@babel/template": "7.0.0-beta.53", "@babel/types": "7.0.0-beta.53", @@ -992,7 +897,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.53.tgz", "integrity": "sha1-rvVLix+ZYW6jfJhHhxajeAJjMls=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53" } @@ -1001,7 +905,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.53.tgz", "integrity": "sha1-9OlS2tF4fSBeGI0+OEzc5JyjaPs=", - "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -1011,14 +914,12 @@ "@babel/parser": { "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.53.tgz", - "integrity": "sha1-H0XrYXv5Rj1IKywE00nZ5O2/SJI=", - "dev": true + "integrity": "sha1-H0XrYXv5Rj1IKywE00nZ5O2/SJI=" }, "@babel/plugin-transform-arrow-functions": { "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.53.tgz", "integrity": "sha1-p19fqEl6rBcp0DO/QcJQQWudHgQ=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" } @@ -1027,7 +928,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.53.tgz", "integrity": "sha1-CkMiGhsMkM1NCfG0a5Wd0khlf3M=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" } @@ -1036,7 +936,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.53.tgz", "integrity": "sha1-nv1uUMofo5jcqnEZYh2j8fu4IbY=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53", "lodash": "^4.17.5" @@ -1046,7 +945,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.53.tgz", "integrity": "sha1-XcLsMb8emAZqzfDEiHt3RMFL7G4=", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "7.0.0-beta.53", "@babel/helper-define-map": "7.0.0-beta.53", @@ -1062,7 +960,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.53.tgz", "integrity": "sha1-l0fiYIKulO2lMPmNLCBZ6NLbwAU=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" } @@ -1071,7 +968,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.53.tgz", "integrity": "sha1-DwrbDhptzTWjZkEBYJ7AYv8SenY=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" } @@ -1080,7 +976,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.53.tgz", "integrity": "sha1-D1WZE6v6GCOcpOCPc+7DbF5XuB8=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" } @@ -1089,7 +984,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.53.tgz", "integrity": "sha1-+gZSFeGFacj3TdUktXIeEdzKlzs=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" } @@ -1098,7 +992,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.53.tgz", "integrity": "sha1-Kzpbs2TB4cV+zL/iXGv1XygEET4=", - "dev": true, "requires": { "@babel/helper-function-name": "7.0.0-beta.53", "@babel/helper-plugin-utils": "7.0.0-beta.53" @@ -1108,7 +1001,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.53.tgz", "integrity": "sha1-vsTxROmpbvUSHRQwx+vl/QiGV8k=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" } @@ -1117,7 +1009,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.53.tgz", "integrity": "sha1-WFTXOeZ5IzqId8C0GCaca+t6Miw=", - "dev": true, "requires": { "@babel/helper-module-transforms": "7.0.0-beta.53", "@babel/helper-plugin-utils": "7.0.0-beta.53" @@ -1127,7 +1018,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.53.tgz", "integrity": "sha1-68P7ocWmyHQ7kJQD7NPn42gcr6U=", - "dev": true, "requires": { "@babel/helper-module-transforms": "7.0.0-beta.53", "@babel/helper-plugin-utils": "7.0.0-beta.53", @@ -1138,7 +1028,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.53.tgz", "integrity": "sha1-uA/NnBWXLcaCMhT1JIUnhgu/BY4=", - "dev": true, "requires": { "@babel/helper-hoist-variables": "7.0.0-beta.53", "@babel/helper-plugin-utils": "7.0.0-beta.53" @@ -1148,7 +1037,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.53.tgz", "integrity": "sha1-Kjar5AodpnbkOhwwcVeOJ70tZ50=", - "dev": true, "requires": { "@babel/helper-module-transforms": "7.0.0-beta.53", "@babel/helper-plugin-utils": "7.0.0-beta.53" @@ -1158,7 +1046,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.53.tgz", "integrity": "sha1-4sTwbts0s9eksnV7oYgp0N8gKcs=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53", "@babel/helper-replace-supers": "7.0.0-beta.53" @@ -1168,7 +1055,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.53.tgz", "integrity": "sha1-7+YM7IzsoNGdXG+hrnm8TjMnnVY=", - "dev": true, "requires": { "@babel/helper-call-delegate": "7.0.0-beta.53", "@babel/helper-get-function-arity": "7.0.0-beta.53", @@ -1179,7 +1065,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.53.tgz", "integrity": "sha1-T+u/YISvoMHJ7ISX3mjAaV/p2gs=", - "dev": true, "requires": { "regenerator-transform": "^0.13.3" } @@ -1188,7 +1073,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.53.tgz", "integrity": "sha1-38SIG2vXZYoAMew7gWPliPCJjUs=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" } @@ -1197,7 +1081,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.53.tgz", "integrity": "sha1-g+j2Rsok8cmCKPnxREz2DL1JOLw=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" } @@ -1206,7 +1089,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.53.tgz", "integrity": "sha1-D888mUq92Lq1m6l4L+TZ+KVF1uc=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53", "@babel/helper-regex": "7.0.0-beta.53" @@ -1216,7 +1098,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.53.tgz", "integrity": "sha1-+msLQXEA0j4tsUwd9HorGzl48dk=", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "7.0.0-beta.53", "@babel/helper-plugin-utils": "7.0.0-beta.53" @@ -1226,7 +1107,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.53.tgz", "integrity": "sha1-ZarocamqQPYRSDZlcxIJrr1cKis=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53" } @@ -1235,7 +1115,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.53.tgz", "integrity": "sha1-CvdOyAGefVnji+ZNt/YikZQv7SU=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53", "@babel/helper-regex": "7.0.0-beta.53", @@ -1246,7 +1125,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.53.tgz", "integrity": "sha1-MyIpCQDQsYewpxdDgeHzu3EFDS4=", - "dev": true, "requires": { "@babel/code-frame": "7.0.0-beta.53", "@babel/parser": "7.0.0-beta.53", @@ -1258,7 +1136,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.53.tgz", "integrity": "sha1-ANMs2NC1j0wB0xFXvmIsZigm00Q=", - "dev": true, "requires": { "@babel/code-frame": "7.0.0-beta.53", "@babel/generator": "7.0.0-beta.53", @@ -1276,7 +1153,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.53.tgz", "integrity": "sha1-GaRhwNpRVZXftnQLS0Xce7Dms3U=", - "dev": true, "requires": { "esutils": "^2.0.2", "lodash": "^4.17.5", @@ -1287,7 +1163,6 @@ "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" } @@ -1295,14 +1170,12 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "regenerator-transform": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", - "dev": true, "requires": { "private": "^0.1.6" } @@ -1313,7 +1186,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/preset-es2017/-/preset-es2017-7.0.0-beta.53.tgz", "integrity": "sha1-xRMrJFQnVQt84O/H2SZ6v6IX/u8=", - "dev": true, "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.53", "@babel/plugin-transform-async-to-generator": "7.0.0-beta.53" @@ -1323,7 +1195,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.53.tgz", "integrity": "sha1-mA0VYLhjV1v1o3eSUDfgEy71kh4=", - "dev": true, "requires": { "@babel/highlight": "7.0.0-beta.53" } @@ -1332,7 +1203,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.53.tgz", "integrity": "sha1-uMrXLFcr4yNK/94ivm2sxCUOA0s=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53", "jsesc": "^2.5.1", @@ -1345,7 +1215,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.53.tgz", "integrity": "sha1-WZYGKDdcvu+WoH7f4co4t1bwGqg=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53" } @@ -1354,7 +1223,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.53.tgz", "integrity": "sha1-USgEro6cvOVDHr6hnkdijC7WU/I=", - "dev": true, "requires": { "@babel/helper-get-function-arity": "7.0.0-beta.53", "@babel/template": "7.0.0-beta.53", @@ -1365,7 +1233,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.53.tgz", "integrity": "sha1-3tiKsp+bHbYch9G7jTijXdp3neY=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53" } @@ -1374,7 +1241,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.53.tgz", "integrity": "sha1-5zXmqjClBLD52Fw4ptRwqfSqgdk=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53", "lodash": "^4.17.5" @@ -1383,14 +1249,12 @@ "@babel/helper-plugin-utils": { "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz", - "integrity": "sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0=", - "dev": true + "integrity": "sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0=" }, "@babel/helper-remap-async-to-generator": { "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.53.tgz", "integrity": "sha1-uDSnVy3sF2OJ/6x+djV5WGSQySI=", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "7.0.0-beta.53", "@babel/helper-wrap-function": "7.0.0-beta.53", @@ -1403,7 +1267,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.53.tgz", "integrity": "sha1-rvVLix+ZYW6jfJhHhxajeAJjMls=", - "dev": true, "requires": { "@babel/types": "7.0.0-beta.53" } @@ -1412,7 +1275,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.53.tgz", "integrity": "sha1-q/sr+pQBBCurJXwBkPWtbbjfFdU=", - "dev": true, "requires": { "@babel/helper-function-name": "7.0.0-beta.53", "@babel/template": "7.0.0-beta.53", @@ -1424,7 +1286,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.53.tgz", "integrity": "sha1-9OlS2tF4fSBeGI0+OEzc5JyjaPs=", - "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -1434,14 +1295,12 @@ "@babel/parser": { "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.53.tgz", - "integrity": "sha1-H0XrYXv5Rj1IKywE00nZ5O2/SJI=", - "dev": true + "integrity": "sha1-H0XrYXv5Rj1IKywE00nZ5O2/SJI=" }, "@babel/plugin-transform-async-to-generator": { "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.53.tgz", "integrity": "sha1-REx2HMQhXJeptVb/WMp7p99dQVM=", - "dev": true, "requires": { "@babel/helper-module-imports": "7.0.0-beta.53", "@babel/helper-plugin-utils": "7.0.0-beta.53", @@ -1452,7 +1311,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.53.tgz", "integrity": "sha1-MyIpCQDQsYewpxdDgeHzu3EFDS4=", - "dev": true, "requires": { "@babel/code-frame": "7.0.0-beta.53", "@babel/parser": "7.0.0-beta.53", @@ -1464,7 +1322,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.53.tgz", "integrity": "sha1-ANMs2NC1j0wB0xFXvmIsZigm00Q=", - "dev": true, "requires": { "@babel/code-frame": "7.0.0-beta.53", "@babel/generator": "7.0.0-beta.53", @@ -1482,7 +1339,6 @@ "version": "7.0.0-beta.53", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.53.tgz", "integrity": "sha1-GaRhwNpRVZXftnQLS0Xce7Dms3U=", - "dev": true, "requires": { "esutils": "^2.0.2", "lodash": "^4.17.5", @@ -1493,7 +1349,6 @@ "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" } @@ -1501,22 +1356,19 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" } } }, "@babel/preset-stage-0": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/preset-stage-0/-/preset-stage-0-7.0.0.tgz", - "integrity": "sha512-FBMd0IiARPtH5aaOFUVki6evHiJQiY0pFy7fizyRF7dtwc+el3nwpzvhb9qBNzceG1OIJModG1xpE0DDFjPXwA==", - "dev": true + "integrity": "sha512-FBMd0IiARPtH5aaOFUVki6evHiJQiY0pFy7fizyRF7dtwc+el3nwpzvhb9qBNzceG1OIJModG1xpE0DDFjPXwA==" }, "@babel/template": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", - "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.7.4", @@ -1527,7 +1379,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", - "dev": true, "requires": { "@babel/code-frame": "^7.5.5", "@babel/generator": "^7.7.4", @@ -1544,46 +1395,21 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", - "dev": true, "requires": { "esutils": "^2.0.2", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } }, - "@types/bn.js": { - "version": "4.11.5", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.5.tgz", - "integrity": "sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng==", - "requires": { - "@types/node": "*" - } - }, "@types/node": { - "version": "12.12.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.21.tgz", - "integrity": "sha512-8sRGhbpU+ck1n0PGAUgVrWrWdjSW2aqNeyC15W88GRsMpSwzv6RJGlLhE7s2RhVSOdyDmxbqlWSeThq4/7xqlA==" - }, - "abstract-leveldown": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", - "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", - "requires": { - "xtend": "~4.0.0" - }, - "dependencies": { - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - } - } + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.1.1.tgz", + "integrity": "sha512-hx6zWtudh3Arsbl3cXay+JnkvVgCKzCWKv42C9J01N2T2np4h8w5X8u6Tpz5mj38kE3M9FM0Pazx8vKFFMnjLQ==" }, "acorn-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, "requires": { "acorn": "^3.0.4" }, @@ -1591,8 +1417,7 @@ "acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" } } }, @@ -1605,7 +1430,6 @@ "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, "requires": { "co": "^4.6.0", "json-stable-stringify": "^1.0.1" @@ -1614,26 +1438,22 @@ "ajv-keywords": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=" }, "ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "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": { "color-convert": "^1.9.0" } @@ -1642,7 +1462,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -1667,7 +1486,6 @@ "version": "10.0.3", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", - "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.0.0", @@ -1681,7 +1499,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", - "dev": true, "requires": { "object.assign": "^4.1.0" } @@ -1689,8 +1506,7 @@ "babelify": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", - "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", - "dev": true + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==" }, "balanced-match": { "version": "1.0.0", @@ -1762,7 +1578,6 @@ "version": "4.7.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.3.tgz", "integrity": "sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001010", "electron-to-chromium": "^1.3.306", @@ -1772,8 +1587,7 @@ "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 + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "buffer-xor": { "version": "1.0.3", @@ -1784,7 +1598,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, "requires": { "callsites": "^0.2.0" } @@ -1792,20 +1605,17 @@ "callsites": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" }, "caniuse-lite": { "version": "1.0.30001012", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001012.tgz", - "integrity": "sha512-7RR4Uh04t9K1uYRWzOJmzplgEOAXbfK72oVNokCdMzA67trrhPzy93ahKk1AWHiA0c58tD2P+NHqxrA8FZ+Trg==", - "dev": true + "integrity": "sha512-7RR4Uh04t9K1uYRWzOJmzplgEOAXbfK72oVNokCdMzA67trrhPzy93ahKk1AWHiA0c58tD2P+NHqxrA8FZ+Trg==" }, "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", @@ -1832,14 +1642,12 @@ "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" }, "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, "requires": { "restore-cursor": "^1.0.1" } @@ -1847,32 +1655,27 @@ "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, "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 + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "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" } @@ -1880,8 +1683,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=" }, "command-exists": { "version": "1.2.8", @@ -1902,7 +1704,6 @@ "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", @@ -1914,7 +1715,6 @@ "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" }, @@ -1922,8 +1722,7 @@ "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 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -1931,7 +1730,6 @@ "version": "3.4.4", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.4.tgz", "integrity": "sha512-hBbxJ6sOkaFSvwAXjJ/t/1usGIPK5gTbtqV8+T+u1pZBkgQ3lDQgAguN1g01PJ0b3eyQxgRIEgxqGoviE1QtIQ==", - "dev": true, "requires": { "browserslist": "^4.7.3", "semver": "^6.3.0" @@ -1940,8 +1738,7 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, @@ -1955,41 +1752,10 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "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==", - "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==", - "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" - } - }, - "crypto-js": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.8.tgz", - "integrity": "sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU=" - }, "d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, "requires": { "es5-ext": "^0.10.50", "type": "^1.0.1" @@ -1999,7 +1765,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -2007,26 +1772,22 @@ "debug-log": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", - "dev": true + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=" }, "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" }, "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 + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "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" } @@ -2057,14 +1818,12 @@ "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, "deglob": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/deglob/-/deglob-1.1.2.tgz", "integrity": "sha1-dtV3wl/j9zKUEqK1nq3qV6xQDj8=", - "dev": true, "requires": { "find-root": "^1.0.0", "glob": "^7.0.5", @@ -2078,8 +1837,7 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" } } }, @@ -2087,7 +1845,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, "requires": { "esutils": "^2.0.2", "isarray": "^1.0.0" @@ -2096,8 +1853,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" } } }, @@ -2114,8 +1870,7 @@ "electron-to-chromium": { "version": "1.3.314", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.314.tgz", - "integrity": "sha512-IKDR/xCxKFhPts7h+VaSXS02Z1mznP3fli1BbXWXeN89i2gCzKraU8qLpEid8YzKcmZdZD3Mly3cn5/lY9xsBQ==", - "dev": true + "integrity": "sha512-IKDR/xCxKFhPts7h+VaSXS02Z1mznP3fli1BbXWXeN89i2gCzKraU8qLpEid8YzKcmZdZD3Mly3cn5/lY9xsBQ==" }, "elliptic": { "version": "6.5.2", @@ -2183,7 +1938,6 @@ "version": "1.16.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.2.tgz", "integrity": "sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA==", - "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -2200,14 +1954,12 @@ "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 + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" }, "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 + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" } } }, @@ -2225,7 +1977,6 @@ "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, "requires": { "es6-iterator": "~2.0.3", "es6-symbol": "~3.1.3", @@ -2236,7 +1987,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, "requires": { "d": "1", "es5-ext": "^0.10.35", @@ -2247,7 +1997,6 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, "requires": { "d": "1", "es5-ext": "~0.10.14", @@ -2261,7 +2010,6 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, "requires": { "d": "1", "es5-ext": "~0.10.14", @@ -2274,7 +2022,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, "requires": { "d": "1", "es5-ext": "~0.10.14" @@ -2286,7 +2033,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, "requires": { "d": "^1.0.1", "ext": "^1.1.2" @@ -2296,7 +2042,6 @@ "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==", - "dev": true, "requires": { "d": "1", "es5-ext": "^0.10.46", @@ -2307,14 +2052,12 @@ "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=" }, "escope": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, "requires": { "es6-map": "^0.1.3", "es6-weak-map": "^2.0.1", @@ -2326,7 +2069,6 @@ "version": "2.10.2", "resolved": "https://registry.npmjs.org/eslint/-/eslint-2.10.2.tgz", "integrity": "sha1-sjCUgv7wQ9MgM2WjIShebM4Bw9c=", - "dev": true, "requires": { "chalk": "^1.1.3", "concat-stream": "^1.4.6", @@ -2365,14 +2107,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -2385,7 +2125,6 @@ "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" } @@ -2393,46 +2132,39 @@ "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, "eslint-config-standard": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-5.3.1.tgz", - "integrity": "sha1-WRyWkVF0QTL1YdO5FagS6kE/5JA=", - "dev": true + "integrity": "sha1-WRyWkVF0QTL1YdO5FagS6kE/5JA=" }, "eslint-config-standard-jsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-1.2.1.tgz", - "integrity": "sha1-DRmxcF8K1INj7yqLv6cd8BLZibM=", - "dev": true + "integrity": "sha1-DRmxcF8K1INj7yqLv6cd8BLZibM=" }, "eslint-plugin-promise": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-1.3.2.tgz", - "integrity": "sha1-/OMy1vX/UjIApTdwSGPsPCQiunw=", - "dev": true + "integrity": "sha1-/OMy1vX/UjIApTdwSGPsPCQiunw=" }, "eslint-plugin-react": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-5.2.2.tgz", "integrity": "sha1-fbBo4fVIf2hx5N7vNqOBwwPqwWE=", - "dev": true, "requires": { "doctrine": "^1.2.2", "jsx-ast-utils": "^1.2.1" @@ -2441,8 +2173,7 @@ "eslint-plugin-standard": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-1.3.3.tgz", - "integrity": "sha1-owhUUVI0MedvQJxwy4+U4yvw7H8=", - "dev": true + "integrity": "sha1-owhUUVI0MedvQJxwy4+U4yvw7H8=" }, "eslint-scope": { "version": "5.0.0", @@ -2456,14 +2187,12 @@ "eslint-visitor-keys": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==" }, "espree": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/espree/-/espree-3.1.4.tgz", "integrity": "sha1-BybXrIOvl6fISY2ps2OjYJ0qaKE=", - "dev": true, "requires": { "acorn": "^3.1.0", "acorn-jsx": "^3.0.0" @@ -2472,16 +2201,14 @@ "acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" } } }, "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 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esrecurse": { "version": "4.2.1", @@ -2499,8 +2226,7 @@ "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "ethashjs": { "version": "0.0.7", @@ -2747,7 +2473,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, "requires": { "d": "1", "es5-ext": "~0.10.14" @@ -2770,14 +2495,12 @@ "exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" }, "ext": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ext/-/ext-1.2.1.tgz", "integrity": "sha512-x+OKKC57tNiLhDW26UmWtvQBpvO+2wxdC/A0jP7RkmjAc4gze9/U98hQyIYJUzo9A+o9ntMHpC+LH3pWMSbrVQ==", - "dev": true, "requires": { "type": "^2.0.0" }, @@ -2785,8 +2508,7 @@ "type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" } } }, @@ -2801,14 +2523,12 @@ "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 + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, "requires": { "escape-string-regexp": "^1.0.5", "object-assign": "^4.1.0" @@ -2818,7 +2538,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", "integrity": "sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g=", - "dev": true, "requires": { "flat-cache": "^1.2.1", "object-assign": "^4.0.1" @@ -2832,14 +2551,12 @@ "find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, "flat-cache": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", - "dev": true, "requires": { "circular-json": "^0.3.1", "graceful-fs": "^4.1.2", @@ -2851,7 +2568,6 @@ "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" } @@ -2867,7 +2583,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "requires": { "is-callable": "^1.1.3" } @@ -2894,16 +2609,10 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, "generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, "requires": { "is-property": "^1.0.2" } @@ -2912,7 +2621,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, "requires": { "is-property": "^1.0.0" } @@ -2920,8 +2628,7 @@ "get-stdin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=" }, "glob": { "version": "7.1.6", @@ -2939,8 +2646,7 @@ "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 + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "graceful-fs": { "version": "4.2.3", @@ -2959,7 +2665,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2967,47 +2672,17 @@ "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", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "ignore": { "version": "3.3.10", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" }, "immediate": { "version": "3.2.3", @@ -3017,8 +2692,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "inflight": { "version": "1.0.6", @@ -3038,7 +2712,6 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, "requires": { "ansi-escapes": "^1.1.0", "ansi-regex": "^2.0.0", @@ -3058,14 +2731,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -3077,8 +2748,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -3086,7 +2756,6 @@ "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" } @@ -3105,7 +2774,6 @@ "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" } @@ -3118,14 +2786,12 @@ "is-my-ip-valid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", - "dev": true + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==" }, "is-my-json-valid": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz", "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", - "dev": true, "requires": { "generate-function": "^2.0.0", "generate-object-property": "^1.1.0", @@ -3137,22 +2803,19 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" } } }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, "requires": { "has": "^1.0.1" } @@ -3160,8 +2823,7 @@ "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 + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" }, "is-symbol": { "version": "1.0.3", @@ -3179,8 +2841,7 @@ "js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" }, "js-sha3": { "version": "0.6.1", @@ -3195,14 +2856,12 @@ "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.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3211,14 +2870,12 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, "requires": { "jsonify": "~0.0.0" } @@ -3227,7 +2884,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", - "dev": true, "requires": { "minimist": "^1.2.0" } @@ -3243,20 +2899,17 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, "jsonpointer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" }, "jsx-ast-utils": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true + "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=" }, "keccak": { "version": "2.1.0", @@ -3479,7 +3132,6 @@ "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" @@ -3494,7 +3146,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" } @@ -3637,14 +3288,12 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, "requires": { "minimist": "0.0.8" }, @@ -3652,22 +3301,19 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, "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 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multiline": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/multiline/-/multiline-1.0.2.tgz", "integrity": "sha1-abHyX/B00oKJBPJE3dBrfZbvbJM=", - "dev": true, "requires": { "strip-indent": "^1.0.0" } @@ -3675,8 +3321,7 @@ "mute-stream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=" }, "nan": { "version": "2.14.0", @@ -3686,14 +3331,12 @@ "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, "node-releases": { "version": "1.1.41", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.41.tgz", "integrity": "sha512-+IctMa7wIs8Cfsa8iYzeaLTFwv5Y4r5jZud+4AnfymzeEXKBCavFX0KBgzVaPVqf0ywa6PrO8/b+bPqdwjGBSg==", - "dev": true, "requires": { "semver": "^6.3.0" }, @@ -3701,28 +3344,24 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, "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 + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "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-inspect": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", - "dev": true + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" }, "object-keys": { "version": "0.4.0", @@ -3747,76 +3386,6 @@ } } }, - "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==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", - "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "requires": { - "has": "^1.0.3" - } - }, - "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==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - } - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3828,14 +3397,12 @@ "onetime": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" }, "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", @@ -3848,8 +3415,7 @@ "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 + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-tmpdir": { "version": "1.0.2", @@ -3864,20 +3430,17 @@ "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 + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "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==" }, "pkg-config": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", - "dev": true, "requires": { "debug-log": "^1.0.0", "find-root": "^1.0.0", @@ -3887,28 +3450,24 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" } } }, "pluralize": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=" }, "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 + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "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 + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" }, "process-nextick-args": { "version": "2.0.1", @@ -3918,8 +3477,7 @@ "progress": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" }, "prr": { "version": "1.0.1", @@ -3964,7 +3522,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3974,14 +3531,12 @@ "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" }, "regenerate-unicode-properties": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", - "dev": true, "requires": { "regenerate": "^1.4.0" } @@ -3990,7 +3545,6 @@ "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", - "dev": true, "requires": { "private": "^0.1.6" } @@ -3999,7 +3553,6 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", - "dev": true, "requires": { "regenerate": "^1.4.0", "regenerate-unicode-properties": "^8.1.0", @@ -4012,14 +3565,12 @@ "regjsgen": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", - "dev": true + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" }, "regjsparser": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, "requires": { "jsesc": "~0.5.0" }, @@ -4027,8 +3578,7 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" } } }, @@ -4057,7 +3607,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, "requires": { "caller-path": "^0.1.0", "resolve-from": "^1.0.0" @@ -4067,7 +3616,6 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -4075,14 +3623,12 @@ "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, "requires": { "exit-hook": "^1.0.0", "onetime": "^1.0.0" @@ -4092,7 +3638,6 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", - "dev": true, "requires": { "through": "~2.3.4" } @@ -4126,7 +3671,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, "requires": { "once": "^1.3.0" } @@ -4134,8 +3678,7 @@ "run-parallel": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", - "dev": true + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" }, "rustbn.js": { "version": "0.2.0", @@ -4145,8 +3688,7 @@ "rx-lite": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=" }, "safe-buffer": { "version": "5.2.0", @@ -4183,46 +3725,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" }, - "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "sha3": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/sha3/-/sha3-1.2.6.tgz", - "integrity": "sha512-KgLGmJGrmNB4JWVsAV11Yk6KbvsAiygWJc7t5IebWva/0NukNrjJqhtKhzy3Eiv2AKuGvhZZt7dt1mDo7HkoiQ==", - "requires": { - "nan": "2.13.2" - }, - "dependencies": { - "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" - } - } - }, "shelljs": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", - "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=", - "dev": true + "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=" }, "slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" }, "solc": { "version": "0.6.0", @@ -4249,20 +3760,17 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "standard": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/standard/-/standard-7.1.2.tgz", "integrity": "sha1-QBZu7sJAUGXRpPDj8VurxuJ0YH4=", - "dev": true, "requires": { "eslint": "~2.10.2", "eslint-config-standard": "5.3.1", @@ -4277,7 +3785,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-4.1.3.tgz", "integrity": "sha1-ejGq1U8D2fOTVfQzic4GlPQJQVU=", - "dev": true, "requires": { "defaults": "^1.0.2", "deglob": "^1.0.0", @@ -4292,8 +3799,7 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" } } }, @@ -4301,7 +3807,6 @@ "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", @@ -4312,7 +3817,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", - "dev": true, "requires": { "define-properties": "^1.1.2", "es-abstract": "^1.5.0", @@ -4323,7 +3827,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", - "dev": true, "requires": { "define-properties": "^1.1.3", "function-bind": "^1.1.1" @@ -4333,7 +3836,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", - "dev": true, "requires": { "define-properties": "^1.1.3", "function-bind": "^1.1.1" @@ -4348,7 +3850,6 @@ "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" } @@ -4365,7 +3866,6 @@ "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" }, @@ -4373,22 +3873,19 @@ "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 + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" } } }, "strip-json-comments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", - "dev": true + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=" }, "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" } @@ -4397,7 +3894,6 @@ "version": "3.8.3", "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, "requires": { "ajv": "^4.7.0", "ajv-keywords": "^1.0.0", @@ -4410,20 +3906,17 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -4435,14 +3928,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=" }, "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" @@ -4452,7 +3943,6 @@ "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" } @@ -4462,8 +3952,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -4471,7 +3960,6 @@ "version": "4.11.0", "resolved": "https://registry.npmjs.org/tape/-/tape-4.11.0.tgz", "integrity": "sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==", - "dev": true, "requires": { "deep-equal": "~1.0.1", "defined": "~1.0.0", @@ -4492,7 +3980,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -4502,14 +3989,12 @@ "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 + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "tmp": { "version": "0.0.33", @@ -4522,26 +4007,22 @@ "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 + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, "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" } @@ -4549,20 +4030,22 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typescript": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.4.tgz", + "integrity": "sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw==" }, "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 + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" }, "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" @@ -4571,26 +4054,22 @@ "unicode-match-property-value-ecmascript": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", - "dev": true + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==" }, "unicode-property-aliases-ecmascript": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", - "dev": true + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==" }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" }, "user-home": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, "requires": { "os-homedir": "^1.0.0" } @@ -4605,32 +4084,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "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==", - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" - }, - "web3": { - "version": "0.20.6", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.20.6.tgz", - "integrity": "sha1-PpcwauAk+yThCj11yIQwJWIhUSA=", - "requires": { - "bignumber.js": "git+https://github.com/frozeman/bignumber.js-nolookahead.git", - "crypto-js": "^3.1.4", - "utf8": "^2.1.1", - "xhr2": "*", - "xmlhttprequest": "*" - } - }, "webworkify": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz", @@ -4639,8 +4092,7 @@ "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 + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, "wrappy": { "version": "1.0.2", @@ -4651,7 +4103,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, "requires": { "mkdirp": "^0.5.1" } diff --git a/remix-solidity/package.json b/remix-solidity/package.json index 11ffd65157..0783c70d3f 100644 --- a/remix-solidity/package.json +++ b/remix-solidity/package.json @@ -2,6 +2,8 @@ "name": "remix-solidity", "version": "0.3.21", "description": "Ethereum IDE and tools for the web", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", "contributors": [ { "name": "Yann Levreau", @@ -12,7 +14,6 @@ "email": "liana@ethdev.com" } ], - "main": "./index.js", "dependencies": { "eslint-scope": "^5.0.0", "remix-lib": "0.4.18", @@ -26,19 +27,21 @@ "@babel/preset-es2015": "latest", "@babel/preset-es2017": "latest", "@babel/preset-stage-0": "^7.0.0", + "@types/node": "^13.1.1", "babel-eslint": "^10.0.0", "babelify": "^10.0.0", "standard": "^7.0.1", - "tape": "^4.6.0" + "tape": "^4.6.0", + "typescript": "^3.7.4" }, "scripts": { - "test": "standard && tape ./test/tests.js" + "build": "tsc", + "test": "tsc && tape ./test/tests.js" }, "standard": { "ignore": [ "node_modules/*" - ], - "parser": "babel-eslint" + ] }, "repository": { "type": "git", diff --git a/remix-solidity/src/compiler/compiler-input.js b/remix-solidity/src/compiler/compiler-input.ts similarity index 71% rename from remix-solidity/src/compiler/compiler-input.js rename to remix-solidity/src/compiler/compiler-input.ts index a2fb296a1f..f474fd8019 100644 --- a/remix-solidity/src/compiler/compiler-input.js +++ b/remix-solidity/src/compiler/compiler-input.ts @@ -1,7 +1,9 @@ 'use strict' -module.exports = (sources, opts) => { - const o = { +import { CompilerInput, Source, CompilerInputOptions } from './types' + +export default (sources: Source, opts: CompilerInputOptions) => { + const o: CompilerInput = { language: 'Solidity', sources: sources, settings: { @@ -25,9 +27,9 @@ module.exports = (sources, opts) => { o.language = opts.language } if (opts.language === 'Yul' && o.settings.optimizer.enabled) { - // details key is valid only for Yul - if (!o.settings.optimizer.details) o.settings.optimizer.details = {} - o.settings.optimizer.details['yul'] = true + if (!o.settings.optimizer.details) + o.settings.optimizer.details = {} + o.settings.optimizer.details.yul = true } return JSON.stringify(o) } diff --git a/remix-solidity/src/compiler/compiler-worker.js b/remix-solidity/src/compiler/compiler-worker.ts similarity index 52% rename from remix-solidity/src/compiler/compiler-worker.js rename to remix-solidity/src/compiler/compiler-worker.ts index 472d9600c0..faaab68e0e 100644 --- a/remix-solidity/src/compiler/compiler-worker.js +++ b/remix-solidity/src/compiler/compiler-worker.ts @@ -1,26 +1,23 @@ 'use strict' -const solc = require('solc/wrapper') - -let compileJSON = function () { return '' } -const missingInputs = [] - -module.exports = function (self) { - self.addEventListener('message', (e) => { - const data = e.data +import solc from 'solc/wrapper' +import { CompilerInput, MessageToWorker } from './types' +var compileJSON: ((input: CompilerInput) => string) | null = (input) => { return '' } +var missingInputs: string[] = [] + +export default (self) => { + self.addEventListener('message', function (e) { + const data: MessageToWorker = e.data switch (data.cmd) { case 'loadVersion': delete self.Module // NOTE: workaround some browsers? self.Module = undefined - compileJSON = null - + //importScripts() method of synchronously imports one or more scripts into the worker's scope self.importScripts(data.data) - - const compiler = solc(self.Module) - - compileJSON = function (input) { + let compiler: solc = solc(self.Module) + compileJSON = (input) => { try { let missingInputsCallback = function (path) { missingInputs.push(path) @@ -31,15 +28,22 @@ module.exports = function (self) { return JSON.stringify({ error: 'Uncaught JavaScript exception:\n' + exception }) } } - self.postMessage({ cmd: 'versionLoaded', data: compiler.version() }) break + case 'compile': missingInputs.length = 0 - self.postMessage({cmd: 'compiled', job: data.job, data: compileJSON(data.input), missingInputs: missingInputs}) + if(data.input && compileJSON) { + self.postMessage({ + cmd: 'compiled', + job: data.job, + data: compileJSON(data.input), + missingInputs: missingInputs + }) + } break } }, false) diff --git a/remix-solidity/src/compiler/compiler.js b/remix-solidity/src/compiler/compiler.js deleted file mode 100644 index 771e5333ef..0000000000 --- a/remix-solidity/src/compiler/compiler.js +++ /dev/null @@ -1,390 +0,0 @@ -'use strict' - -const solc = require('solc/wrapper') -const solcABI = require('solc/abi') - -const webworkify = require('webworkify') - -const compilerInput = require('./compiler-input') - -const remixLib = require('remix-lib') -const EventManager = remixLib.EventManager - -const txHelper = require('./txHelper') - -/* - trigger compilationFinished, compilerLoaded, compilationStarted, compilationDuration -*/ -function Compiler (handleImportCall) { - var self = this - this.event = new EventManager() - - let compileJSON - - let worker = null - - let currentVersion - - let optimize = false - - let evmVersion = null - - let language = 'Solidity' - - this.setOptimize = function (_optimize) { - optimize = _optimize - } - - this.setEvmVersion = function (_evmVersion) { - evmVersion = _evmVersion - } - - this.setLanguage = function (_language) { - language = _language - } - - let compilationStartTime = null - this.event.register('compilationFinished', (success, data, source) => { - if (success && compilationStartTime) { - this.event.trigger('compilationDuration', [(new Date().getTime()) - compilationStartTime]) - } - compilationStartTime = null - }) - - this.event.register('compilationStarted', () => { - compilationStartTime = new Date().getTime() - }) - - const internalCompile = (files, target, missingInputs) => { - gatherImports(files, target, missingInputs, (error, input) => { - if (error) { - this.lastCompilationResult = null - this.event.trigger('compilationFinished', [false, {'error': { formattedMessage: error, severity: 'error' }}, files]) - } else { - compileJSON(input) - } - }) - } - - const compile = function (files, target) { - self.event.trigger('compilationStarted', []) - internalCompile(files, target) - } - this.compile = compile - - function setCompileJSON (_compileJSON) { - compileJSON = _compileJSON - } - this.setCompileJSON = setCompileJSON // this is exposed for testing - - function onCompilerLoaded (version) { - currentVersion = version - self.event.trigger('compilerLoaded', [version]) - } - - function onInternalCompilerLoaded () { - if (worker === null) { - let compiler - if (typeof (window) === 'undefined') { - compiler = require('solc') - } else { - compiler = solc(window.Module) - } - - compileJSON = function (source) { - const missingInputs = [] - const missingInputsCallback = function (path) { - missingInputs.push(path) - return { error: 'Deferred import' } - } - - let result - try { - const input = compilerInput(source.sources, {optimize: optimize, evmVersion: evmVersion, language: language, target: source.target}) - result = compiler.compile(input, { import: missingInputsCallback }) - result = JSON.parse(result) - } catch (exception) { - result = { error: { formattedMessage: 'Uncaught JavaScript exception:\n' + exception, severity: 'error', mode: 'panic' } } - } - - compilationFinished(result, missingInputs, source) - } - onCompilerLoaded(compiler.version()) - } - } - // exposed for use in node - this.onInternalCompilerLoaded = onInternalCompilerLoaded - - this.lastCompilationResult = { - data: null, - source: null - } - - /** - * return the contract obj of the given @arg name. Uses last compilation result. - * return null if not found - * @param {String} name - contract name - * @returns contract obj and associated file: { contract, file } or null - */ - this.getContract = (name) => { - if (this.lastCompilationResult.data && this.lastCompilationResult.data.contracts) { - return txHelper.getContract(name, this.lastCompilationResult.data.contracts) - } - return null - } - - /** - * call the given @arg cb (function) for all the contracts. Uses last compilation result - * @param {Function} cb - callback - */ - this.visitContracts = (cb) => { - if (this.lastCompilationResult.data && this.lastCompilationResult.data.contracts) { - return txHelper.visitContracts(this.lastCompilationResult.data.contracts, cb) - } - return null - } - - /** - * return the compiled contracts from the last compilation result - * @return {Object} - contracts - */ - this.getContracts = () => { - if (this.lastCompilationResult.data && this.lastCompilationResult.data.contracts) { - return this.lastCompilationResult.data.contracts - } - return null - } - - /** - * return the sources from the last compilation result - * @param {Object} cb - map of sources - */ - this.getSources = () => { - if (this.lastCompilationResult.source) { - return this.lastCompilationResult.source.sources - } - return null - } - - /** - * return the sources @arg fileName from the last compilation result - * @param {Object} cb - map of sources - */ - this.getSource = (fileName) => { - if (this.lastCompilationResult.source) { - return this.lastCompilationResult.source.sources[fileName] - } - return null - } - - /** - * return the source from the last compilation result that has the given index. null if source not found - * @param {Int} index - index of the source - */ - this.getSourceName = (index) => { - if (this.lastCompilationResult.data && this.lastCompilationResult.data.sources) { - return Object.keys(this.lastCompilationResult.data.sources)[index] - } - return null - } - - function compilationFinished (data, missingInputs, source) { - let noFatalErrors = true // ie warnings are ok - - function isValidError (error) { - // The deferred import is not a real error - // FIXME: maybe have a better check? - if (/Deferred import/.exec(error.message)) { - return false - } - - return error.severity !== 'warning' - } - - if (data['error'] !== undefined) { - // Ignore warnings (and the 'Deferred import' error as those are generated by us as a workaround - if (isValidError(data['error'])) { - noFatalErrors = false - } - } - if (data['errors'] !== undefined) { - data['errors'].forEach(function (err) { - // Ignore warnings and the 'Deferred import' error as those are generated by us as a workaround - if (isValidError(err)) { - noFatalErrors = false - } - }) - } - - if (!noFatalErrors) { - // There are fatal errors - abort here - self.lastCompilationResult = null - self.event.trigger('compilationFinished', [false, data, source]) - } else if (missingInputs !== undefined && missingInputs.length > 0) { - // try compiling again with the new set of inputs - - internalCompile(source.sources, source.target, missingInputs) - } else { - data = updateInterface(data) - - self.lastCompilationResult = { - data: data, - source: source - } - self.event.trigger('compilationFinished', [true, data, source]) - } - } - - // TODO: needs to be changed to be more node friendly - this.loadVersion = (usingWorker, url) => { - console.log('Loading ' + url + ' ' + (usingWorker ? 'with worker' : 'without worker')) - this.event.trigger('loadingCompiler', [url, usingWorker]) - - if (worker !== null) { - worker.terminate() - worker = null - } - if (usingWorker) { - loadWorker(url) - } else { - loadInternal(url) - } - } - - function loadInternal (url) { - delete window.Module - // NOTE: workaround some browsers? - window.Module = undefined - - // Set a safe fallback until the new one is loaded - setCompileJSON(function (source) { - compilationFinished({ error: { formattedMessage: 'Compiler not yet loaded.' } }) - }) - - const newScript = document.createElement('script') - newScript.type = 'text/javascript' - newScript.src = url - document.getElementsByTagName('head')[0].appendChild(newScript) - const check = window.setInterval(function () { - if (!window.Module) { - return - } - window.clearInterval(check) - onInternalCompilerLoaded() - }, 200) - } - - function loadWorker (url) { - worker = webworkify(require('./compiler-worker.js')) - const jobs = [] - worker.addEventListener('message', function (msg) { - const data = msg.data - switch (data.cmd) { - case 'versionLoaded': - onCompilerLoaded(data.data) - break - case 'compiled': - let result - try { - result = JSON.parse(data.data) - } catch (exception) { - result = { 'error': 'Invalid JSON output from the compiler: ' + exception } - } - let sources = {} - if (data.job in jobs !== undefined) { - sources = jobs[data.job].sources - delete jobs[data.job] - } - compilationFinished(result, data.missingInputs, sources) - break - } - }) - worker.addEventListener('error', function (msg) { - compilationFinished({ error: 'Worker error: ' + msg.data }) - }) - compileJSON = function (source) { - jobs.push({sources: source}) - worker.postMessage({cmd: 'compile', job: jobs.length - 1, input: compilerInput(source.sources, - {optimize: optimize, evmVersion: evmVersion, language: language, target: source.target})}) - } - worker.postMessage({cmd: 'loadVersion', data: url}) - } - - function gatherImports (files, target, importHints, cb) { - importHints = importHints || [] - - // FIXME: This will only match imports if the file begins with one. - // It should tokenize by lines and check each. - // eslint-disable-next-line no-useless-escape - let importRegex = /^\s*import\s*[\'\"]([^\'\"]+)[\'\"];/g - - for (var fileName in files) { - let match - while ((match = importRegex.exec(files[fileName].content))) { - let importFilePath = match[1] - if (importFilePath.startsWith('./')) { - const path = /(.*\/).*/.exec(fileName) - if (path !== null) { - importFilePath = importFilePath.replace('./', path[1]) - } else { - importFilePath = importFilePath.slice(2) - } - } - - // FIXME: should be using includes or sets, but there's also browser compatibility.. - if (importHints.indexOf(importFilePath) === -1) { - importHints.push(importFilePath) - } - } - } - - while (importHints.length > 0) { - let m = importHints.pop() - if (m in files) { - continue - } - - if (handleImportCall) { - handleImportCall(m, function (err, content) { - if (err) { - cb(err) - } else { - files[m] = { content } - gatherImports(files, target, importHints, cb) - } - }) - } - - return - } - - cb(null, { 'sources': files, 'target': target }) - } - - function truncateVersion (version) { - const tmp = /^(\d+.\d+.\d+)/.exec(version) - if (tmp) { - return tmp[1] - } - return version - } - - function updateInterface (data) { - txHelper.visitContracts(data.contracts, (contract) => { - if (!contract.object.abi) contract.object.abi = [] - if (language === 'Yul' && contract.object.abi.length === 0) { - // yul compiler does not return any abi, - // we default to accept the fallback function (which expect raw data as argument). - contract.object.abi.push({ - 'payable': true, - 'stateMutability': 'payable', - 'type': 'fallback' - }) - } - data.contracts[contract.file][contract.name].abi = solcABI.update(truncateVersion(currentVersion), contract.object.abi) - }) - return data - } -} - -module.exports = Compiler diff --git a/remix-solidity/src/compiler/compiler.ts b/remix-solidity/src/compiler/compiler.ts new file mode 100644 index 0000000000..4c4740dfa6 --- /dev/null +++ b/remix-solidity/src/compiler/compiler.ts @@ -0,0 +1,411 @@ +'use strict' + +import { update } from 'solc/abi' +import webworkify from 'webworkify' +import compilerInput from './compiler-input' +import { EventManager } from 'remix-lib' +import { default as txHelper } from './txHelper'; +import { Source, SourceWithTarget, MessageFromWorker, CompilerState, CompilationResult, + visitContractsCallbackParam, visitContractsCallbackInterface, CompilationError, + gatherImportsCallbackInterface } from './types' + +/* + trigger compilationFinished, compilerLoaded, compilationStarted, compilationDuration +*/ +export class Compiler { + event: EventManager + state: CompilerState + + constructor (public handleImportCall: (fileurl: string, cb: Function) => void) { + this.event = new EventManager() + this.state = { + compileJSON: null, + worker: null, + currentVersion: null, + optimize: false, + evmVersion: null, + language: 'Solidity', + compilationStartTime: null, + lastCompilationResult: { + data: null, + source: null + } + } + + this.event.register('compilationFinished', (success: boolean, data: CompilationResult, source: SourceWithTarget) => { + if (success && this.state.compilationStartTime) { + this.event.trigger('compilationDuration', [(new Date().getTime()) - this.state.compilationStartTime]) + } + this.state.compilationStartTime = null + }) + + this.event.register('compilationStarted', () => { + this.state.compilationStartTime = new Date().getTime() + }) + } + + /** + * @dev Setter function for CompilerState's properties (used by IDE) + * @param key key + * @param value value of key in CompilerState + */ + + set (key: K, value: CompilerState[K]) { + this.state[key] = value + } + + /** + * @dev Internal function to compile the contract after gathering imports + * @param files source file + * @param missingInputs missing import file path list + */ + + internalCompile (files: Source, missingInputs?: string[]): void { + this.gatherImports(files, missingInputs, (error, input) => { + if (error) { + this.state.lastCompilationResult = null + this.event.trigger('compilationFinished', [false, {'error': { formattedMessage: error, severity: 'error' }}, files]) + } else if(this.state.compileJSON && input) + this.state.compileJSON(input) + }) + } + + /** + * @dev Compile source files (used by IDE) + * @param files source files + * @param target target file name (This is passed as it is to IDE) + */ + + compile (files: Source, target: string): void { + this.state.target = target + this.event.trigger('compilationStarted', []) + this.internalCompile(files, target) + } + + /** + * @dev Called when compiler is loaded, set current compiler version + * @param version compiler version + */ + + onCompilerLoaded (version: string): void { + this.state.currentVersion = version + this.event.trigger('compilerLoaded', [version]) + } + + /** + * @dev Called when compiler is loaded internally (without worker) + */ + + onInternalCompilerLoaded (): void { + if (this.state.worker === null) { + const compiler: any = typeof (window) === 'undefined' ? require('solc') : require('solc/wrapper')(window['Module']) + this.state.compileJSON = (source: SourceWithTarget) => { + let missingInputs: string[] = [] + const missingInputsCallback = (path: string) => { + missingInputs.push(path) + return { error: 'Deferred import' } + } + let result: CompilationResult = {} + try { + if(source && source.sources) { + const input = compilerInput(source.sources, {optimize: this.state.optimize, evmVersion: this.state.evmVersion, language: this.state.language}) + result = JSON.parse(compiler.compile(input, { import: missingInputsCallback })) + } + } catch (exception) { + result = { error: { formattedMessage: 'Uncaught JavaScript exception:\n' + exception, severity: 'error', mode: 'panic' } } + } + this.onCompilationFinished(result, missingInputs, source) + } + this.onCompilerLoaded(compiler.version()) + } + } + + /** + * @dev Called when compilation is finished + * @param data compilation result data + * @param missingInputs missing imports + * @param source Source + */ + + onCompilationFinished (data: CompilationResult, missingInputs?: string[], source?: SourceWithTarget): void { + let noFatalErrors: boolean = true // ie warnings are ok + + const checkIfFatalError = (error: CompilationError) => { + // Ignore warnings and the 'Deferred import' error as those are generated by us as a workaround + const isValidError = (error.message && error.message === 'Deferred import') ? false : error.severity !== 'warning' + if(isValidError) noFatalErrors = false + } + if (data.error) checkIfFatalError(data.error) + if (data.errors) data.errors.forEach((err) => checkIfFatalError(err)) + if (!noFatalErrors) { + // There are fatal errors, abort here + this.state.lastCompilationResult = null + this.event.trigger('compilationFinished', [false, data, source]) + } else if (missingInputs !== undefined && missingInputs.length > 0) { + // try compiling again with the new set of inputs + this.internalCompile(source.sources, missingInputs) + } else { + data = this.updateInterface(data) + if(source) + { + source.target = this.state.target; + this.state.lastCompilationResult = { + data: data, + source: source + } + } + this.event.trigger('compilationFinished', [true, data, source]) + } + } + + /** + * @dev Load compiler using given URL (used by IDE) + * @param usingWorker if true, load compiler using worker + * @param url URL to load compiler from + */ + + loadVersion (usingWorker: boolean, url: string): void { + console.log('Loading ' + url + ' ' + (usingWorker ? 'with worker' : 'without worker')) + this.event.trigger('loadingCompiler', [url, usingWorker]) + if (this.state.worker) { + this.state.worker.terminate() + this.state.worker = null + } + if (usingWorker) { + this.loadWorker(url) + } else { + this.loadInternal(url) + } + } + + /** + * @dev Load compiler using 'script' element (without worker) + * @param url URL to load compiler from + */ + + loadInternal (url: string): void { + delete window['Module'] + // NOTE: workaround some browsers? + window['Module'] = undefined + // Set a safe fallback until the new one is loaded + this.state.compileJSON = (source: SourceWithTarget) => { + this.onCompilationFinished({ error: { formattedMessage: 'Compiler not yet loaded.' } }) + } + let newScript: HTMLScriptElement = document.createElement('script') + newScript.type = 'text/javascript' + newScript.src = url + document.getElementsByTagName('head')[0].appendChild(newScript) + const check: number = window.setInterval(() => { + if (!window['Module']) { + return + } + window.clearInterval(check) + this.onInternalCompilerLoaded() + }, 200) + } + + /** + * @dev Load compiler using web worker + * @param url URL to load compiler from + */ + + loadWorker (url: string): void { + this.state.worker = webworkify(require('./compiler-worker.js').default) + let jobs: Record<'sources', SourceWithTarget> [] = [] + + this.state.worker.addEventListener('message', (msg: Record <'data', MessageFromWorker>) => { + const data: MessageFromWorker = msg.data + switch (data.cmd) { + case 'versionLoaded': + if(data.data) this.onCompilerLoaded(data.data) + break + case 'compiled': + let result: CompilationResult + if(data.data && data.job !== undefined && data.job >= 0) { + try { + result = JSON.parse(data.data) + } catch (exception) { + result = { error : { formattedMessage: 'Invalid JSON output from the compiler: ' + exception }} + } + let sources: SourceWithTarget = {} + if (data.job in jobs !== undefined) { + sources = jobs[data.job].sources + delete jobs[data.job] + } + this.onCompilationFinished(result, data.missingInputs, sources) + } + break + } + }) + + this.state.worker.addEventListener('error', (msg: Record <'data', MessageFromWorker>) => { + this.onCompilationFinished({ error: { formattedMessage: 'Worker error: ' + msg.data }}) + }) + + this.state.compileJSON = (source: SourceWithTarget) => { + if(source && source.sources) { + jobs.push({sources: source}) + this.state.worker.postMessage({ + cmd: 'compile', + job: jobs.length - 1, + input: compilerInput(source.sources, { + optimize: this.state.optimize, + evmVersion: this.state.evmVersion, + language: this.state.language + }) + }) + } + } + + this.state.worker.postMessage({ + cmd: 'loadVersion', + data: url + }) + } + + /** + * @dev Gather imports for compilation + * @param files file sources + * @param importHints import file list + * @param cb callback + */ + + gatherImports (files: Source, importHints?: string[], cb?: gatherImportsCallbackInterface): void { + importHints = importHints || [] + // FIXME: This will only match imports if the file begins with one '.' + // It should tokenize by lines and check each. + const importRegex: RegExp = /^\s*import\s*[\'\"]([^\'\"]+)[\'\"];/g + for (const fileName in files) { + let match: RegExpExecArray | null + while ((match = importRegex.exec(files[fileName].content))) { + let importFilePath = match[1] + if (importFilePath.startsWith('./')) { + const path: RegExpExecArray | null = /(.*\/).*/.exec(fileName) + importFilePath = path ? importFilePath.replace('./', path[1]) : importFilePath.slice(2) + } + if (!importHints.includes(importFilePath)) importHints.push(importFilePath) + } + } + while (importHints.length > 0) { + const m: string = importHints.pop() as string + if (m && m in files) continue + + if (this.handleImportCall) { + this.handleImportCall(m, (err, content: string) => { + if (err && cb) cb(err) + else { + files[m] = { content } + this.gatherImports(files, importHints, cb) + } + }) + } + return + } + if(cb) + cb(null, { 'sources': files }) + } + + /** + * @dev Truncate version string + * @param version version + */ + + truncateVersion (version: string): string { + const tmp: RegExpExecArray | null = /^(\d+.\d+.\d+)/.exec(version) + return tmp ? tmp[1] : version + } + + /** + * @dev Update ABI according to current compiler version + * @param data Compilation result + */ + + updateInterface (data: CompilationResult) : CompilationResult { + txHelper.visitContracts(data.contracts, (contract : visitContractsCallbackParam) => { + if (!contract.object.abi) contract.object.abi = [] + if (this.state.language === 'Yul' && contract.object.abi.length === 0) { + // yul compiler does not return any abi, + // we default to accept the fallback function (which expect raw data as argument). + contract.object.abi.push({ + 'payable': true, + 'stateMutability': 'payable', + 'type': 'fallback' + }) + } + if(data && data.contracts && this.state.currentVersion) + data.contracts[contract.file][contract.name].abi = update(this.truncateVersion(this.state.currentVersion), contract.object.abi) + }) + return data + } + + /** + * @dev Get contract obj of the given contract name from last compilation result. + * @param name contract name + */ + + getContract (name: string): Record | null { + if (this.state.lastCompilationResult && this.state.lastCompilationResult.data && this.state.lastCompilationResult.data.contracts) { + return txHelper.getContract(name, this.state.lastCompilationResult.data.contracts) + } + return null + } + + /** + * @dev Call the given callback for all the contracts from last compilation result + * @param cb callback + */ + + visitContracts (cb: visitContractsCallbackInterface) : void | null { + if (this.state.lastCompilationResult && this.state.lastCompilationResult.data && this.state.lastCompilationResult.data.contracts) { + return txHelper.visitContracts(this.state.lastCompilationResult.data.contracts, cb) + } + return null + } + + /** + * @dev Get the compiled contracts data from last compilation result + */ + + getContracts () : CompilationResult['contracts'] | null { + if (this.state.lastCompilationResult && this.state.lastCompilationResult.data && this.state.lastCompilationResult.data.contracts) { + return this.state.lastCompilationResult.data.contracts + } + return null + } + + /** + * @dev Get sources from last compilation result + */ + + getSources () : Source | null | undefined { + if (this.state.lastCompilationResult && this.state.lastCompilationResult.source) { + return this.state.lastCompilationResult.source.sources + } + return null + } + + /** + * @dev Get sources of passed file name from last compilation result + * @param fileName file name + */ + + getSource (fileName: string) : Source['filename'] | null { + if (this.state.lastCompilationResult && this.state.lastCompilationResult.source && this.state.lastCompilationResult.source.sources) { + return this.state.lastCompilationResult.source.sources[fileName] + } + return null + } + + /** + * @dev Get source name at passed index from last compilation result + * @param index - index of the source + */ + + getSourceName (index: number): string | null { + if (this.state.lastCompilationResult && this.state.lastCompilationResult.data && this.state.lastCompilationResult.data.sources) { + return Object.keys(this.state.lastCompilationResult.data.sources)[index] + } + return null + } +} + diff --git a/remix-solidity/src/compiler/txHelper.js b/remix-solidity/src/compiler/txHelper.js deleted file mode 100644 index 739ba65ef6..0000000000 --- a/remix-solidity/src/compiler/txHelper.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict' - -module.exports = { - - /** - * return the contract obj of the given @arg name. Uses last compilation result. - * return null if not found - * @param {String} name - contract name - * @returns contract obj and associated file: { contract, file } or null - */ - getContract: (contractName, contracts) => { - for (let file in contracts) { - if (contracts[file][contractName]) { - return { object: contracts[file][contractName], file: file } - } - } - return null - }, - - /** - * call the given @arg cb (function) for all the contracts. Uses last compilation result - * stop visiting when cb return true - * @param {Function} cb - callback - */ - visitContracts: (contracts, cb) => { - for (let file in contracts) { - for (let name in contracts[file]) { - if (cb({ name: name, object: contracts[file][name], file: file })) return - } - } - } - -} diff --git a/remix-solidity/src/compiler/txHelper.ts b/remix-solidity/src/compiler/txHelper.ts new file mode 100644 index 0000000000..c361da126e --- /dev/null +++ b/remix-solidity/src/compiler/txHelper.ts @@ -0,0 +1,40 @@ +'use strict' + +import { CompilationResult, visitContractsCallbackParam, visitContractsCallbackInterface } from './types' +export default { + + /** + * @dev Get contract obj of given contract name from last compilation result. + * @param name contract name + * @param contracts 'contracts' object from last compilation result + */ + + getContract: (contractName: string, contracts: CompilationResult["contracts"]) : Record | null => { + for (const file in contracts) { + if (contracts[file][contractName]) { + return { object: contracts[file][contractName], file: file } + } + } + return null + }, + + /** + * @dev call the given callback for all contracts from last compilation result, stop visiting when cb return true + * @param contracts - 'contracts' object from last compilation result + * @param cb - callback + */ + + visitContracts: (contracts: CompilationResult["contracts"], cb: visitContractsCallbackInterface) : void => { + for (const file in contracts) { + for (const name in contracts[file]) { + const param: visitContractsCallbackParam = { + name: name, + object: contracts[file][name], + file: file + } + if (cb(param)) return + } + } + } + +} diff --git a/remix-solidity/src/compiler/types.ts b/remix-solidity/src/compiler/types.ts new file mode 100644 index 0000000000..855621cc11 --- /dev/null +++ b/remix-solidity/src/compiler/types.ts @@ -0,0 +1,481 @@ +export interface CompilerInput { + // Required: Source code language. Currently supported are "Solidity" and "Yul". + language: Language, + // Required + sources: Source, + // Optional + settings: + { + // Optional: Sorted list of remappings + remappings?: string[], + // Optional: Optimizer settings + optimizer: { + // disabled by default + enabled: boolean, + // Optimize for how many times you intend to run the code. + // Lower values will optimize more for initial deployment cost, higher + // values will optimize more for high-frequency usage. + runs: number, + // Switch optimizer components on or off in detail. + // The "enabled" switch above provides two defaults which can be + // tweaked here. If "details" is given, "enabled" can be omitted. + details?: { + // The peephole optimizer is always on if no details are given, + // use details to switch it off. + peephole?: boolean, + // The unused jumpdest remover is always on if no details are given, + // use details to switch it off. + jumpdestRemover?: boolean, + // Sometimes re-orders literals in commutative operations. + orderLiterals?: boolean, + // Removes duplicate code blocks + deduplicate?: boolean, + // Common subexpression elimination, this is the most complicated step but + // can also provide the largest gain. + cse?: boolean, + // Optimize representation of literal numbers and strings in code. + constantOptimizer?: boolean, + // The new Yul optimizer. Mostly operates on the code of ABIEncoderV2. + // It can only be activated through the details here. + yul?: boolean, + // Tuning options for the Yul optimizer. + yulDetails?: { + // Improve allocation of stack slots for variables, can free up stack slots early. + // Activated by default if the Yul optimizer is activated. + stackAllocation: boolean + } + } + }, + // Version of the EVM to compile for. + // Affects type checking and code generation. + evmVersion?: EVMVersion, + // Optional: Debugging settings + debug?: { + // How to treat revert (and require) reason strings. Settings are + // "default", "strip", "debug" and "verboseDebug". + // "default" does not inject compiler-generated revert strings and keeps user-supplied ones. + // "strip" removes all revert strings (if possible, i.e. if literals are used) keeping side-effects + // "debug" injects strings for compiler-generated internal reverts (not yet implemented) + // "verboseDebug" even appends further information to user-supplied revert strings (not yet implemented) + revertStrings: 'default' | 'strip' | 'debug' | 'verboseDebug' + } + // Metadata settings (optional) + metadata?: { + // Use only literal content and not URLs (false by default) + useLiteralContent: boolean, + // Use the given hash method for the metadata hash that is appended to the bytecode. + // The metadata hash can be removed from the bytecode via option "none". + // The other options are "ipfs" and "bzzr1". + // If the option is omitted, "ipfs" is used by default. + bytecodeHash: 'ipfs' | 'bzzr1' | 'none' + }, + // Addresses of the libraries. If not all libraries are given here, + // it can result in unlinked objects whose output data is different. + libraries?: { + // The top level key is the the name of the source file where the library is used. + // If remappings are used, this source file should match the global path + // after remappings were applied. + // If this key is an empty string, that refers to a global level. + [fileName: string]: Record + } + // The following can be used to select desired outputs based + // on file and contract names. + // If this field is omitted, then the compiler loads and does type checking, + // but will not generate any outputs apart from errors. + // The first level key is the file name and the second level key is the contract name. + // An empty contract name is used for outputs that are not tied to a contract + // but to the whole source file like the AST. + // A star as contract name refers to all contracts in the file. + // Similarly, a star as a file name matches all files. + // To select all outputs the compiler can possibly generate, use + // "outputSelection: { "*": { "*": [ "*" ], "": [ "*" ] } }" + // but note that this might slow down the compilation process needlessly. + // + // The available output types are as follows: + // + // File level (needs empty string as contract name): + // ast - AST of all source files + // legacyAST - legacy AST of all source files + // + // Contract level (needs the contract name or "*"): + // abi - ABI + // devdoc - Developer documentation (natspec) + // userdoc - User documentation (natspec) + // metadata - Metadata + // ir - Yul intermediate representation of the code before optimization + // irOptimized - Intermediate representation after optimization + // storageLayout - Slots, offsets and types of the contract's state variables. + // evm.assembly - New assembly format + // evm.legacyAssembly - Old-style assembly format in JSON + // evm.bytecode.object - Bytecode object + // evm.bytecode.opcodes - Opcodes list + // evm.bytecode.sourceMap - Source mapping (useful for debugging) + // evm.bytecode.linkReferences - Link references (if unlinked object) + // evm.deployedBytecode* - Deployed bytecode (has the same options as evm.bytecode) + // evm.methodIdentifiers - The list of function hashes + // evm.gasEstimates - Function gas estimates + // ewasm.wast - eWASM S-expressions format (not supported at the moment) + // ewasm.wasm - eWASM binary format (not supported at the moment) + // + // Note that using a using `evm`, `evm.bytecode`, `ewasm`, etc. will select every + // target part of that output. Additionally, `*` can be used as a wildcard to request everything. + // + outputSelection?: { + '*': { + '': [ 'legacyAST', 'ast' ], + '*': [ 'abi', 'metadata', 'devdoc', 'userdoc', 'evm.legacyAssembly', 'evm.bytecode', 'evm.deployedBytecode', 'evm.methodIdentifiers', 'evm.gasEstimates' ] + } + } + } +} + + +export interface Source { + [fileName: string]: + { + // Optional: keccak256 hash of the source file + keccak256?: string, + // Required (unless "urls" is used): literal contents of the source file + content: string, + urls?: string[] + } +} + +export interface CompilerInputOptions { + optimize: boolean | number, + libraries?: { + [fileName: string]: Record + }, + evmVersion?: EVMVersion, + language?: Language +} + +export type EVMVersion = 'homestead' | 'tangerineWhistle' | 'spuriousDragon' | 'byzantium' | 'constantinople' | 'petersburg' | 'istanbul' | 'berlin' | null + +export type Language = 'Solidity' | 'Yul' + +export interface CompilerState { + compileJSON: ((input: SourceWithTarget) => void) | null, + worker: any, + currentVersion: string| null| undefined, + optimize: boolean, + evmVersion: EVMVersion| null, + language: Language, + compilationStartTime: number| null, + target: string | null, + lastCompilationResult: { + data: CompilationResult | null, + source: SourceWithTarget | null | undefined + } | null +} + +export interface SourceWithTarget { + sources?: Source, + target?: string | null | undefined +} + +export interface MessageToWorker { + cmd: string, + job?: number, + input?: CompilerInput, + data?: string +} + +export interface MessageFromWorker { + cmd: string, + job?: number, + missingInputs?: string[], + data?: string +} + +export interface visitContractsCallbackParam { + name: string, + object: CompiledContract, + file: string +} + +export interface visitContractsCallbackInterface { + (param: visitContractsCallbackParam): boolean | void +} + +export interface gatherImportsCallbackInterface { + (err?: Error | null, result?: SourceWithTarget) : any +} + +export interface CompilationResult { + error?: CompilationError, + /** not present if no errors/warnings were encountered */ + errors?: CompilationError[] + /** This contains the file-level outputs. In can be limited/filtered by the outputSelection settings */ + sources?: { + [contractName: string]: CompilationSource + } + /** This contains the contract-level outputs. It can be limited/filtered by the outputSelection settings */ + contracts?: { + /** If the language used has no contract names, this field should equal to an empty string. */ + [fileName: string]: { + [contract: string]: CompiledContract + } + } + } + + /////////// + // ERROR // + /////////// + + export interface CompilationError { + /** Location within the source file */ + sourceLocation?: { + file: string + start: number + end: number + } + /** Error type */ + type?: CompilationErrorType + /** Component where the error originated, such as "general", "ewasm", etc. */ + component?: 'general' | 'ewasm' | string + severity?: 'error' | 'warning' + message?: string + mode?: 'panic' + /** the message formatted with source location */ + formattedMessage?: string + } + + type CompilationErrorType = + | 'JSONError' + | 'IOError' + | 'ParserError' + | 'DocstringParsingError' + | 'SyntaxError' + | 'DeclarationError' + | 'TypeError' + | 'UnimplementedFeatureError' + | 'InternalCompilerError' + | 'Exception' + | 'CompilerError' + | 'FatalError' + | 'Warning' + + //////////// + // SOURCE // + //////////// + export interface CompilationSource { + /** Identifier of the source (used in source maps) */ + id: number + /** The AST object */ + ast: AstNode + /** The legacy AST object */ + legacyAST: AstNodeLegacy + } + + ///////// + // AST // + ///////// + export interface AstNode { + absolutePath?: string + exportedSymbols?: Object + id: number + nodeType: string + nodes?: Array + src: string + literals?: Array + file?: string + scope?: number + sourceUnit?: number + symbolAliases?: Array + [x: string]: any + } + + export interface AstNodeLegacy { + id: number + name: string + src: string + children?: Array + attributes?: AstNodeAtt + } + + export interface AstNodeAtt { + operator?: string + string?: null + type?: string + value?: string + constant?: boolean + name?: string + public?: boolean + exportedSymbols?: Object + argumentTypes?: null + absolutePath?: string + [x: string]: any + } + + ////////////// + // CONTRACT // + ////////////// + export interface CompiledContract { + /** The Ethereum Contract ABI. If empty, it is represented as an empty array. */ + abi: ABIDescription[] + // See the Metadata Output documentation (serialised JSON string) + metadata: string + /** User documentation (natural specification) */ + userdoc: UserDocumentation + /** Developer documentation (natural specification) */ + devdoc: DeveloperDocumentation + /** Intermediate representation (string) */ + ir: string + /** EVM-related outputs */ + evm: { + assembly: string + legacyAssembly: {} + /** Bytecode and related details. */ + bytecode: BytecodeObject + deployedBytecode: BytecodeObject + /** The list of function hashes */ + methodIdentifiers: { + [functionIdentifier: string]: string + } + // Function gas estimates + gasEstimates: { + creation: { + codeDepositCost: string + executionCost: 'infinite' | string + totalCost: 'infinite' | string + } + external: { + [functionIdentifier: string]: string + } + internal: { + [functionIdentifier: string]: 'infinite' | string + } + } + } + /** eWASM related outputs */ + ewasm: { + /** S-expressions format */ + wast: string + /** Binary format (hex string) */ + wasm: string + } + } + + ///////// + // ABI // + ///////// + export type ABIDescription = FunctionDescription | EventDescription + + export interface FunctionDescription { + /** Type of the method. default is 'function' */ + type?: 'function' | 'constructor' | 'fallback' | 'receive' + /** The name of the function. Constructor and fallback function never have name */ + name?: string + /** List of parameters of the method. Fallback function doesn’t have inputs. */ + inputs?: ABIParameter[] + /** List of the outputs parameters for the method, if any */ + outputs?: ABIParameter[] + /** State mutability of the method */ + stateMutability: 'pure' | 'view' | 'nonpayable' | 'payable' + /** true if function accepts Ether, false otherwise. Default is false */ + payable?: boolean + /** true if function is either pure or view, false otherwise. Default is false */ + constant?: boolean + } + + export interface EventDescription { + type: 'event' + name: string + inputs: ABIParameter & + { + /** true if the field is part of the log’s topics, false if it one of the log’s data segment. */ + indexed: boolean + }[] + /** true if the event was declared as anonymous. */ + anonymous: boolean + } + + export interface ABIParameter { + /** The name of the parameter */ + name: string + /** The canonical type of the parameter */ + type: ABITypeParameter + /** Used for tuple types */ + components?: ABIParameter[] + } + + export type ABITypeParameter = + | 'uint' + | 'uint[]' // TODO : add + | 'int' + | 'int[]' // TODO : add + | 'address' + | 'address[]' + | 'bool' + | 'bool[]' + | 'fixed' + | 'fixed[]' // TODO : add + | 'ufixed' + | 'ufixed[]' // TODO : add + | 'bytes' + | 'bytes[]' // TODO : add + | 'function' + | 'function[]' + | 'tuple' + | 'tuple[]' + | string // Fallback + + /////////////////////////// + // NATURAL SPECIFICATION // + /////////////////////////// + + // Userdoc + export interface UserDocumentation { + methods: UserMethodList + notice: string + } + + export type UserMethodList = { + [functionIdentifier: string]: UserMethodDoc + } & { + 'constructor'?: string + } + export interface UserMethodDoc { + notice: string + } + + // Devdoc + export interface DeveloperDocumentation { + author: string + title: string + details: string + methods: DevMethodList + } + + export interface DevMethodList { + [functionIdentifier: string]: DevMethodDoc + } + + export interface DevMethodDoc { + author: string + details: string + return: string + params: { + [param: string]: string + } + } + + ////////////// + // BYTECODE // + ////////////// + export interface BytecodeObject { + /** The bytecode as a hex string. */ + object: string + /** Opcodes list */ + opcodes: string + /** The source mapping as a string. See the source mapping definition. */ + sourceMap: string + /** If given, this is an unlinked object. */ + linkReferences?: { + [contractName: string]: { + /** Byte offsets into the bytecode. */ + [library: string]: { start: number; length: number }[] + } + } + } \ No newline at end of file diff --git a/remix-solidity/tsconfig.json b/remix-solidity/tsconfig.json new file mode 100644 index 0000000000..d731108d0c --- /dev/null +++ b/remix-solidity/tsconfig.json @@ -0,0 +1,25 @@ +{ + "include": ["src", "index.ts"], + "compilerOptions": { + "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ + "lib": ["dom", "es2018"], /* Specify library files to be included in the compilation. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + "sourceMap": true, /* Generates corresponding '.map' file. */ + "outDir": "./dist", /* Redirect output structure to the directory. */ + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */ + /* Module Resolution Options */ + "baseUrl": "./src", /* Base directory to resolve non-absolute module names. */ + "paths": { "remix-solidity": ["./"] }, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + "typeRoots": [ + "./@types", + "./node_modules/@types" + ], + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + /* Experimental Options */ + "experimentalDecorators": false, /* Enables experimental support for ES7 decorators. */ + } + } + \ No newline at end of file