diff --git a/package-lock.json b/package-lock.json index 12915c18..c380a774 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "metronome-desktop-wallet", - "version": "1.2.0", + "version": "1.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -66,13 +66,13 @@ } }, "@babel/generator": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.2.tgz", - "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.3.tgz", + "integrity": "sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A==", "requires": { - "@babel/types": "^7.3.2", + "@babel/types": "^7.3.3", "jsesc": "^2.5.1", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "source-map": "^0.5.0", "trim-right": "^1.0.1" }, @@ -125,6 +125,18 @@ "@babel/types": "^7.0.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.2.tgz", + "integrity": "sha512-tdW8+V8ceh2US4GsYdNVNoohq5uVwOf9k6krjwW4E1lINcHgttnWcNqgdoessn12dAy8QkbezlbQh2nXISNY+A==", + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.2.3" + } + }, "@babel/helper-define-map": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", @@ -292,9 +304,9 @@ } }, "@babel/parser": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.2.tgz", - "integrity": "sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ==" + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.3.tgz", + "integrity": "sha512-xsH1CJoln2r74hR+y7cg2B5JCPaTh+Hd+EbBRk9nWGSNspuo6krjhX0Om6RnRQuIvFq8wVXCLKH3kwKDYhanSg==" }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.2.0", @@ -307,27 +319,22 @@ } }, "@babel/plugin-proposal-class-properties": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz", - "integrity": "sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz", + "integrity": "sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg==", "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0", - "@babel/plugin-syntax-class-properties": "^7.0.0" + "@babel/helper-create-class-features-plugin": "^7.3.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-proposal-decorators": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.1.6.tgz", - "integrity": "sha512-U42f8KhUbtlhUDyV/wK4Rq/wWh8vWyttYABckG/v0vVnMPvayOewZC/83CbVdmyP+UhEqI368FEQ7hHMfhBpQA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.3.0.tgz", + "integrity": "sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg==", "requires": { + "@babel/helper-create-class-features-plugin": "^7.3.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/plugin-syntax-decorators": "^7.1.0" + "@babel/plugin-syntax-decorators": "^7.2.0" } }, "@babel/plugin-proposal-json-strings": { @@ -403,14 +410,6 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-syntax-class-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz", - "integrity": "sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, "@babel/plugin-syntax-decorators": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz", @@ -420,9 +419,9 @@ } }, "@babel/plugin-syntax-dynamic-import": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz", - "integrity": "sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -468,9 +467,9 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.2.0.tgz", - "integrity": "sha512-WhKr6yu6yGpGcNMVgIBuI9MkredpVc7Y3YR4UzEZmDztHoL6wV56YBHLhWnjO1EvId1B32HrD3DRFc+zSoKI1g==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz", + "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==", "requires": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -511,9 +510,9 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", - "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.3.tgz", + "integrity": "sha512-n0CLbsg7KOXsMF4tSTLCApNMoXk0wOPb0DYfsOO1e7SfIb9gOyfbpKI2MZ+AXfqvlfzq2qsflJ1nEns48Caf2w==", "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", "@babel/helper-define-map": "^7.1.0", @@ -526,9 +525,9 @@ }, "dependencies": { "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==" + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==" } } }, @@ -604,12 +603,12 @@ } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.1.6.tgz", - "integrity": "sha512-0tyFAAjJmnRlr8MVJV39ASn1hv+PbdVP71hf7aAseqLfQ0o9QXk9htbMbq7/ZYXnUIp6gDw0lUUP0+PQMbbtmg==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.3.tgz", + "integrity": "sha512-xnt7UIk9GYZRitqCnsVMjQK1O2eKZwFB3CvvHjf5SGx6K6vr/MScCKQDnf1DxRaj501e3pXjti+inbSXX2ZUoQ==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0" + "@babel/plugin-syntax-flow": "^7.2.0" } }, "@babel/plugin-transform-for-of": { @@ -700,9 +699,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz", - "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz", + "integrity": "sha512-IrIP25VvXWu/VlBWTpsjGptpomtIkYrN/3aDp4UKm7xK6UxZY88kcJ1UwETbzHAlwN21MnNfwlar0u8y3KpiXw==", "requires": { "@babel/helper-call-delegate": "^7.1.0", "@babel/helper-get-function-arity": "^7.0.0", @@ -773,9 +772,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.1.0.tgz", - "integrity": "sha512-WFLMgzu5DLQEah0lKTJzYb14vd6UiES7PTnXcvrPZ1VrwFeJ+mTbvr65fFAsXYMt2bIoOoC0jk76zY1S7HZjUg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz", + "integrity": "sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw==", "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", @@ -993,9 +992,9 @@ } }, "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==" + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==" }, "ms": { "version": "2.1.1", @@ -1005,12 +1004,12 @@ } }, "@babel/types": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.2.tgz", - "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.3.tgz", + "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==", "requires": { "esutils": "^2.0.2", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "to-fast-properties": "^2.0.0" }, "dependencies": { @@ -1246,9 +1245,9 @@ } }, "@types/node": { - "version": "10.12.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.24.tgz", - "integrity": "sha512-GWWbvt+z9G5otRBW8rssOFgRY87J9N/qbhqfjMZ+gUuL6zoL+Hm6gP/8qQBG4jjimqdaNLCehcVapZ/Fs2WjCQ==" + "version": "10.12.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.26.tgz", + "integrity": "sha512-nMRqS+mL1TOnIJrL6LKJcNZPB8V3eTfRo9FQA2b5gDvrHurC8XbSA86KNe0dShlEL7ReWJv/OU9NL7Z0dnqWTg==" }, "@types/q": { "version": "1.5.1", @@ -1514,9 +1513,9 @@ "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, "ajv": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.8.1.tgz", - "integrity": "sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -1530,9 +1529,9 @@ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" }, "ajv-keywords": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", - "integrity": "sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", + "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==" }, "alphanum-sort": { "version": "1.0.2", @@ -2068,12 +2067,12 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "autoprefixer": { - "version": "9.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.4.7.tgz", - "integrity": "sha512-qS5wW6aXHkm53Y4z73tFGsUhmZu4aMPV9iHXYlF0c/wxjknXNHuj/1cIQb+6YH692DbJGGWcckAXX+VxKvahMA==", + "version": "9.4.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.4.8.tgz", + "integrity": "sha512-DIhd0KMi9Nql3oJkJ2HCeOVihrXFPtWXc6ckwaUNwliDOt9OGr0fk8vV8jCLWXnZc1EXvQ2uLUzGpcPxFAQHEQ==", "requires": { "browserslist": "^4.4.1", - "caniuse-lite": "^1.0.30000932", + "caniuse-lite": "^1.0.30000938", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.14", @@ -2376,46 +2375,6 @@ "find-up": "^2.1.0", "istanbul-lib-instrument": "^1.10.1", "test-exclude": "^4.2.1" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - } } }, "babel-plugin-jest-hoist": { @@ -2424,18 +2383,18 @@ "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=" }, "babel-plugin-macros": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.4.2.tgz", - "integrity": "sha512-NBVpEWN4OQ/bHnu1fyDaAaTPAjnhXCEPqr1RwqxrU7b6tZ2hypp+zX4hlNfmVGfClD5c3Sl6Hfj5TJNF5VG5aA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.5.0.tgz", + "integrity": "sha512-BWw0lD0kVZAXRD3Od1kMrdmfudqzDzYv2qrN3l2ISR1HVp1EgLKfbOrYV9xmY5k3qx3RIu5uPAUZZZHpo0o5Iw==", "requires": { "cosmiconfig": "^5.0.5", "resolve": "^1.8.1" } }, "babel-plugin-named-asset-import": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.0.tgz", - "integrity": "sha512-to6Shd/r8fMRRg/MaOhDNfqpuXfjlQx3ypWDG6jh4ESCVZDJCgdgIalZbrnVlBPGgH/QeyHMjnGb2W+JJiy+NQ==" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.1.tgz", + "integrity": "sha512-vzZlo+yEB5YHqI6CRRTDojeT43J3Wf3C/MVkZW5UlbSeIIVUYRKtxaFT2L/VTv9mbIyatCW39+9g/SZolvwRUQ==" }, "babel-plugin-styled-components": { "version": "1.10.0", @@ -2680,9 +2639,9 @@ } }, "babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.20", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.20.tgz", - "integrity": "sha512-bWQ8e7LsgdFpyHU/RabjDAjVhL7KLAJXEt0nb0LANFje8YAGA8RlZv88a72aCswOxELWULkYuJqfFoKgs58Tng==" + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" }, "babel-plugin-transform-regenerator": { "version": "6.26.0", @@ -2742,44 +2701,56 @@ } }, "babel-preset-react-app": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-7.0.0.tgz", - "integrity": "sha512-LQKCB3xxdhAlRbk6IIZdO4ry1yA8gKGVV4phjOIgCEQr3oyaLPXf2j+lfD0zljOE2wkN2axRGOLTzdUPzVDO4w==", - "requires": { - "@babel/core": "7.1.6", - "@babel/plugin-proposal-class-properties": "7.1.0", - "@babel/plugin-proposal-decorators": "7.1.6", - "@babel/plugin-proposal-object-rest-spread": "7.0.0", - "@babel/plugin-syntax-dynamic-import": "7.0.0", - "@babel/plugin-transform-classes": "7.1.0", - "@babel/plugin-transform-destructuring": "7.1.3", - "@babel/plugin-transform-flow-strip-types": "7.1.6", - "@babel/plugin-transform-react-constant-elements": "7.0.0", - "@babel/plugin-transform-react-display-name": "7.0.0", - "@babel/plugin-transform-runtime": "7.1.0", - "@babel/preset-env": "7.1.6", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-7.0.1.tgz", + "integrity": "sha512-cic2V+GftWwt82XNMKGxvkFAVvuaBISy0/mzNLLPlALXXJxUvxJgVy2DI8HVk311oewJsmBiu/unE4wINUCvkg==", + "requires": { + "@babel/core": "7.2.2", + "@babel/plugin-proposal-class-properties": "7.3.0", + "@babel/plugin-proposal-decorators": "7.3.0", + "@babel/plugin-proposal-object-rest-spread": "7.3.2", + "@babel/plugin-syntax-dynamic-import": "7.2.0", + "@babel/plugin-transform-classes": "7.2.2", + "@babel/plugin-transform-destructuring": "7.3.2", + "@babel/plugin-transform-flow-strip-types": "7.2.3", + "@babel/plugin-transform-react-constant-elements": "7.2.0", + "@babel/plugin-transform-react-display-name": "7.2.0", + "@babel/plugin-transform-runtime": "7.2.0", + "@babel/preset-env": "7.3.1", "@babel/preset-react": "7.0.0", "@babel/preset-typescript": "7.1.0", - "@babel/runtime": "7.1.5", - "babel-loader": "8.0.4", + "@babel/runtime": "7.3.1", + "babel-loader": "8.0.5", "babel-plugin-dynamic-import-node": "2.2.0", - "babel-plugin-macros": "2.4.2", - "babel-plugin-transform-react-remove-prop-types": "0.4.20" - }, - "dependencies": { - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz", - "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0" + "babel-plugin-macros": "2.5.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24" + }, + "dependencies": { + "@babel/core": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", + "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helpers": "^7.2.0", + "@babel/parser": "^7.2.2", + "@babel/template": "^7.2.2", + "@babel/traverse": "^7.2.2", + "@babel/types": "^7.2.2", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.10", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" } }, "@babel/plugin-transform-classes": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz", - "integrity": "sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", + "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", "@babel/helper-define-map": "^7.1.0", @@ -2791,96 +2762,95 @@ "globals": "^11.1.0" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz", - "integrity": "sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw==", + "babel-loader": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "util.promisify": "^1.0.0" } }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.0.0.tgz", - "integrity": "sha512-z8yrW4KCVcqPYr0r9dHXe7fu3daLzn0r6TQEFoGbXahdrzEwT1d1ux+/EnFcqIHv9uPilUlnRnPIUf7GMO0ehg==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "ms": "^2.1.1" } }, - "@babel/plugin-transform-react-display-name": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz", - "integrity": "sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg==", + "find-cache-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", + "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" } }, - "@babel/preset-env": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.1.6.tgz", - "integrity": "sha512-YIBfpJNQMBkb6MCkjz/A9J76SNCSuGVamOVBgoUkLzpJD/z8ghHi9I42LQ4pulVX68N/MmImz6ZTixt7Azgexw==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.1.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.0.0", - "@babel/plugin-syntax-async-generators": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.1.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.1.5", - "@babel/plugin-transform-classes": "^7.1.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-dotall-regex": "^7.0.0", - "@babel/plugin-transform-duplicate-keys": "^7.0.0", - "@babel/plugin-transform-exponentiation-operator": "^7.1.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.1.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-amd": "^7.1.0", - "@babel/plugin-transform-modules-commonjs": "^7.1.0", - "@babel/plugin-transform-modules-systemjs": "^7.0.0", - "@babel/plugin-transform-modules-umd": "^7.1.0", - "@babel/plugin-transform-new-target": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.1.0", - "@babel/plugin-transform-parameters": "^7.1.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "@babel/plugin-transform-typeof-symbol": "^7.0.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "browserslist": "^4.1.0", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.3.0" - } - }, - "@babel/runtime": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.5.tgz", - "integrity": "sha512-xKnPpXG/pvK1B90JkwwxSGii90rQGKtzcMt2gI5G6+M0REXaq6rOHsGC2ay6/d0Uje7zzvSzjEzfR3ENhFlrfA==", - "requires": { - "regenerator-runtime": "^0.12.0" + "locate-path": "^3.0.0" } }, "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==" + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==" }, - "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -2925,9 +2895,9 @@ } }, "core-js": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.4.tgz", - "integrity": "sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A==" + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==" }, "json5": { "version": "0.5.1", @@ -2959,9 +2929,9 @@ }, "dependencies": { "core-js": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.4.tgz", - "integrity": "sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A==" + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==" } } }, @@ -3621,6 +3591,11 @@ "yallist": "^3.0.2" } }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, "yallist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", @@ -3724,9 +3699,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000935", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000935.tgz", - "integrity": "sha512-1Y2uJ5y56qDt3jsDTdBHL1OqiImzjoQcBG6Yl3Qizq8mcc2SgCFpi+ZwLLqkztYnk9l87IYqRlNBnPSOTbFkXQ==" + "version": "1.0.30000938", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000938.tgz", + "integrity": "sha512-ekW8NQ3/FvokviDxhdKLZZAx7PptXNwxKgXtnR5y+PR3hckwuP3yJ1Ir+4/c97dsHNqtAyfKUGdw8P4EYzBNgw==" }, "capture-exit": { "version": "1.2.0", @@ -3778,9 +3753,9 @@ "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==" }, "chokidar": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.0.tgz", - "integrity": "sha512-5t6G2SH8eO6lCvYOoUpaRnF5Qfd//gd7qJAkwRUw9qlGVkiQ13uwQngqbWWaurOsaAm9+kUGbITADxt6H0XFNQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", + "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -4437,16 +4412,6 @@ "restore-cursor": "^2.0.0" } }, - "cli-table3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", - "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", - "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" - } - }, "cli-truncate": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", @@ -4618,9 +4583,9 @@ } }, "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, "combined-stream": { "version": "1.0.7", @@ -4676,11 +4641,11 @@ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" }, "compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.16.tgz", + "integrity": "sha512-JQfEOdnI7dASwCuSPWIeVYwc/zMsu/+tRhoUvEfXz2gxOA2DNjmG5vhtFdBlhWPPGo+RdT9S3tgc/uH5qgDiiA==", "requires": { - "mime-db": ">= 1.36.0 < 2" + "mime-db": ">= 1.38.0 < 2" } }, "compression": { @@ -4910,13 +4875,14 @@ } }, "cosmiconfig": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", - "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.1.0.tgz", + "integrity": "sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q==", "requires": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", "js-yaml": "^3.9.0", + "lodash.get": "^4.4.2", "parse-json": "^4.0.0" } }, @@ -5171,9 +5137,9 @@ "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=" }, "css-what": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", - "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" }, "cssdb": { "version": "4.3.0", @@ -5186,12 +5152,12 @@ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" }, "cssnano": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.8.tgz", - "integrity": "sha512-5GIY0VzAHORpbKiL3rMXp4w4M1Ki+XlXgEXyuWXVd3h6hlASb+9Vo76dNP56/elLMVBBsUfusCo1q56uW0UWig==", + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", "requires": { "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.6", + "cssnano-preset-default": "^4.0.7", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" }, @@ -5217,39 +5183,39 @@ } }, "cssnano-preset-default": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz", - "integrity": "sha512-UPboYbFaJFtDUhJ4fqctThWbbyF4q01/7UhsZbLzp35l+nUxtzh1SifoVlEfyLM3n3Z0htd8B1YlCxy9i+bQvg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", "requires": { "css-declaration-sorter": "^4.0.1", "cssnano-util-raw-cache": "^4.0.1", "postcss": "^7.0.0", - "postcss-calc": "^7.0.0", - "postcss-colormin": "^4.0.2", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.1", + "postcss-discard-comments": "^4.0.2", "postcss-discard-duplicates": "^4.0.2", "postcss-discard-empty": "^4.0.1", "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.10", - "postcss-merge-rules": "^4.0.2", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.1", - "postcss-minify-params": "^4.0.1", - "postcss-minify-selectors": "^4.0.1", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.1", - "postcss-normalize-positions": "^4.0.1", - "postcss-normalize-repeat-style": "^4.0.1", - "postcss-normalize-string": "^4.0.1", - "postcss-normalize-timing-functions": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", "postcss-normalize-unicode": "^4.0.1", "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.1", - "postcss-ordered-values": "^4.1.1", - "postcss-reduce-initial": "^4.0.2", - "postcss-reduce-transforms": "^4.0.1", - "postcss-svgo": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", "postcss-unique-selectors": "^4.0.1" }, "dependencies": { @@ -5346,9 +5312,9 @@ "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" }, "cssstyle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", - "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.1.tgz", + "integrity": "sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A==", "requires": { "cssom": "0.3.x" } @@ -5747,10 +5713,11 @@ } }, "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", "requires": { + "arrify": "^1.0.1", "path-type": "^3.0.0" }, "dependencies": { @@ -5832,19 +5799,12 @@ } }, "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" - } + "domelementtype": "^1.3.0", + "entities": "^1.1.1" } }, "dom-walk": { @@ -5994,66 +5954,202 @@ "sanitize-filename": "^1.6.1", "update-notifier": "^2.5.0", "yargs": "^12.0.1" - } - }, - "electron-builder-lib": { - "version": "20.22.0", - "resolved": "https://registry.npmjs.org/electron-builder-lib/-/electron-builder-lib-20.22.0.tgz", - "integrity": "sha512-pMSJ6YEmwhwnfq6v4XE7xT07eKGZIRVaM0yN86VBP0I3GBaUZHr02+G/+QBZxjr/sInnkkWvjLSwLoo/WRanjQ==", - "dev": true, - "requires": { - "7zip-bin": "~4.0.2", - "app-builder-bin": "1.11.2", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.5", - "builder-util": "5.16.2", - "builder-util-runtime": "4.4.1", - "chromium-pickle-js": "^0.2.0", - "debug": "^3.1.0", - "ejs": "^2.6.1", - "electron-osx-sign": "0.4.10", - "electron-publish": "20.22.2", - "env-paths": "^1.0.0", - "fs-extra-p": "^4.6.1", - "hosted-git-info": "^2.7.1", - "is-ci": "^1.1.0", - "isbinaryfile": "^3.0.2", - "js-yaml": "^3.12.0", - "lazy-val": "^1.0.3", - "minimatch": "^3.0.4", - "normalize-package-data": "^2.4.0", - "plist": "^3.0.1", - "read-config-file": "3.1.0", - "sanitize-filename": "^1.6.1", - "semver": "^5.5.0", - "sumchecker": "^2.0.2", - "temp-file": "^3.1.3" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "ms": "^2.1.1" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, - "sumchecker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", - "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "debug": "^2.2.0" - }, - "dependencies": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", + "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^2.0.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "electron-builder-lib": { + "version": "20.22.0", + "resolved": "https://registry.npmjs.org/electron-builder-lib/-/electron-builder-lib-20.22.0.tgz", + "integrity": "sha512-pMSJ6YEmwhwnfq6v4XE7xT07eKGZIRVaM0yN86VBP0I3GBaUZHr02+G/+QBZxjr/sInnkkWvjLSwLoo/WRanjQ==", + "dev": true, + "requires": { + "7zip-bin": "~4.0.2", + "app-builder-bin": "1.11.2", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.5", + "builder-util": "5.16.2", + "builder-util-runtime": "4.4.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^3.1.0", + "ejs": "^2.6.1", + "electron-osx-sign": "0.4.10", + "electron-publish": "20.22.2", + "env-paths": "^1.0.0", + "fs-extra-p": "^4.6.1", + "hosted-git-info": "^2.7.1", + "is-ci": "^1.1.0", + "isbinaryfile": "^3.0.2", + "js-yaml": "^3.12.0", + "lazy-val": "^1.0.3", + "minimatch": "^3.0.4", + "normalize-package-data": "^2.4.0", + "plist": "^3.0.1", + "read-config-file": "3.1.0", + "sanitize-filename": "^1.6.1", + "semver": "^5.5.0", + "sumchecker": "^2.0.2", + "temp-file": "^3.1.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "sumchecker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", + "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "dev": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -6198,9 +6294,9 @@ } }, "electron-log": { - "version": "2.2.17", - "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-2.2.17.tgz", - "integrity": "sha512-v+Af5W5z99ehhaLOfE9eTSXUwjzh2wFlQjz51dvkZ6ZIrET6OB/zAZPvsuwT6tm3t5x+M1r+Ed3U3xtPZYAyuQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-3.0.1.tgz", + "integrity": "sha512-bomFcrYvkEXj0H00T5GjBee50TBA/VwdoDFpPQ2jz3LDGi+4wKF3xrB+N1qXiZYoqDeaK5lNRAkNsHKmXeCPfg==" }, "electron-osx-sign": { "version": "0.4.10", @@ -6470,9 +6566,9 @@ } }, "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", "dev": true }, "escape-html": { @@ -6486,9 +6582,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", "requires": { "esprima": "^3.1.3", "estraverse": "^4.2.0", @@ -6572,9 +6668,9 @@ } }, "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==" + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==" }, "ms": { "version": "2.1.1", @@ -6615,9 +6711,9 @@ } }, "eslint-config-react-app": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-3.0.6.tgz", - "integrity": "sha512-VL5rA1EBZv7f9toc9x71or7nr4jRmwCH4V9JKB9DFVaTLOLI9+vjWLgQLjMu3xR9iUT80dty86RbCfNaKyrFFg==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-3.0.7.tgz", + "integrity": "sha512-Mmmc9lIY/qvX6OEV09+ZLqVTz1aX8VVCrgCjBHXdmMGaC+pldD+87oj3BiJWXMSfcYs5iOo9gy0mGnQ8f/fMsQ==", "requires": { "confusing-browser-globals": "^1.0.5" } @@ -6702,14 +6798,6 @@ "isarray": "^1.0.0" } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -6726,36 +6814,6 @@ "strip-bom": "^3.0.0" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -6998,13 +7056,13 @@ } }, "ethereumjs-util": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.0.0.tgz", - "integrity": "sha512-E3yKUyl0Fs95nvTFQZe/ZSNcofhDzUsDlA5y2uoRmf1+Ec7gpGhNCsgKkZBRh7Br5op8mJcYF/jFbmjj909+nQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz", + "integrity": "sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q==", "requires": { "bn.js": "^4.11.0", "create-hash": "^1.1.2", - "ethjs-util": "^0.1.6", + "ethjs-util": "0.1.6", "keccak": "^1.0.2", "rlp": "^2.0.0", "safe-buffer": "^5.1.1", @@ -7122,11 +7180,11 @@ "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==" }, "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", "requires": { - "original": ">=0.0.5" + "original": "^1.0.0" } }, "evp_bytestokey": { @@ -7147,12 +7205,12 @@ } }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -7160,12 +7218,14 @@ "strip-eof": "^1.0.0" }, "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "pump": "^3.0.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } } } @@ -7196,14 +7256,6 @@ "fill-range": "^2.1.0" } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "expect": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.3.tgz", @@ -7906,11 +7958,11 @@ "dev": true }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "^3.0.0" + "locate-path": "^2.0.0" } }, "flat-cache": { @@ -7939,20 +7991,25 @@ } }, "follow-redirects": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", - "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", "requires": { - "debug": "=3.1.0" + "debug": "^3.2.6" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, @@ -8931,25 +8988,28 @@ } }, "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "global-prefix": "^3.0.0" } }, "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } } }, "globals": { @@ -8958,12 +9018,12 @@ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" }, "globby": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", - "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", "requires": { "array-union": "^1.0.1", - "dir-glob": "^2.0.0", + "dir-glob": "2.0.0", "fast-glob": "^2.0.2", "glob": "^7.1.2", "ignore": "^3.3.5", @@ -9115,11 +9175,11 @@ }, "dependencies": { "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.11" } } } @@ -9346,14 +9406,6 @@ "integrity": "sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw==", "dev": true }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "requires": { - "parse-passwd": "^1.0.0" - } - }, "hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -9837,12 +9889,45 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -9852,6 +9937,40 @@ "ci-info": "^2.0.0" } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -9951,9 +10070,9 @@ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, "immer": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/immer/-/immer-1.7.2.tgz", - "integrity": "sha512-4Urocwu9+XLDJw4Tc6ZCg7APVjjLInCFvO4TwGsAYV5zT6YYSor14dsZR0+0tHlDIN92cFUOq+i7fC00G5vTxA==" + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" }, "import-cwd": { "version": "2.1.0", @@ -10091,9 +10210,9 @@ } }, "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, "ip": { "version": "1.1.5", @@ -10497,11 +10616,11 @@ }, "dependencies": { "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.11" } } } @@ -10628,48 +10747,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, "jest-cli": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", @@ -10713,62 +10790,6 @@ "yargs": "^11.0.0" } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -10776,38 +10797,6 @@ "requires": { "ansi-regex": "^3.0.0" } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yargs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "requires": { - "camelcase": "^4.1.0" - } } } }, @@ -11180,109 +11169,11 @@ "source-map": "^0.5.7" } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -11292,38 +11183,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yargs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "requires": { - "camelcase": "^4.1.0" - } } } }, @@ -11652,11 +11511,11 @@ "integrity": "sha512-pjCf3BYk+uv3ZcPzEVM0BFvO9Uw58TmlrU0oG5tTrr9Kcid3+kdKxapH8CjdYmVa2nO5wOoZn2rdvZx2PKj/xg==" }, "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "^2.0.0" + "invert-kv": "^1.0.0" } }, "left-pad": { @@ -11786,6 +11645,21 @@ "ms": "^2.1.1" } }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -11952,6 +11826,15 @@ } } }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", @@ -12280,11 +12163,11 @@ } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "^3.0.0", + "p-locate": "^2.0.0", "path-exists": "^3.0.0" } }, @@ -12313,6 +12196,11 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -12544,13 +12432,11 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" + "mimic-fn": "^1.0.0" } }, "memoize-one": { @@ -12657,9 +12543,9 @@ "integrity": "sha512-qGh4HFRqRL5tr4KuR3aoJi6FW81V2r/u/ZxCcgpOdkxqGy92jh1isBxySRwLagNctYF/tbxJljxSGRAQ57sKkg==" }, "metronome-wallet-core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/metronome-wallet-core/-/metronome-wallet-core-2.0.1.tgz", - "integrity": "sha512-KTW/Pr4FbbNfNsyQdpSQRFpIXh48KNyf3lqlsLBGNRBPJ9GZmp4WHbs41d2ulhnY9NMOSBnhNi+qWTHSo7DD7Q==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/metronome-wallet-core/-/metronome-wallet-core-2.0.2.tgz", + "integrity": "sha512-yyBaY2sGs7giRjTRYA7YpqlcZm/K+6nJtwN70GkzIk4bXiEPcNI0GVkxslABd9TNGA4grgjo3uKMc+x0xiODgA==", "requires": { "axios": "^0.18.0", "axios-cookiejar-support": "^0.4.2", @@ -12711,9 +12597,9 @@ } }, "metronome-wallet-ui-logic": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/metronome-wallet-ui-logic/-/metronome-wallet-ui-logic-2.1.0.tgz", - "integrity": "sha512-K+WkyPQo1BrwGmAsL68UN8BkbqvCWjnkYTdiYr7mR1xyu0Gc4L7rfbaMKAwChiFq1hhKfvrRWgKbtsN/SRoI4w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/metronome-wallet-ui-logic/-/metronome-wallet-ui-logic-3.2.0.tgz", + "integrity": "sha512-+EeTV8UqJQacC79nE8Z97lS2NoEHKBU/7O/hEH/CuC7hLCg1jzqnv/YcTtE1h6hmXMFXZqb2dH1S46VxZnUMDw==", "requires": { "babel-preset-es2015": "^6.24.1", "bignumber.js": "^6.0.0", @@ -12775,18 +12661,11 @@ "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" }, "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", "requires": { - "mime-db": "~1.37.0" - }, - "dependencies": { - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" - } + "mime-db": "~1.38.0" } }, "mimic-fn": { @@ -13167,9 +13046,9 @@ } }, "node-releases": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.7.tgz", - "integrity": "sha512-bKdrwaqJUPHqlCzDD7so/R+Nk0jGv9a11ZhLrD9f6i947qGLrGAhU3OxRENa19QQmwzGy/g6zCDEuLGDO8HPvA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.8.tgz", + "integrity": "sha512-gQm+K9mGCiT/NXHy+V/ZZS1N/LOaGGqRAAJJs3X9Ah1g+CIbRcBgNyoNYQ+SEtcyAtB9KqDruu+fF7nWjsqRaA==", "requires": { "semver": "^5.3.0" } @@ -13362,9 +13241,9 @@ "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==" }, "object-visit": { "version": "1.0.1", @@ -13529,13 +13408,13 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "os-tmpdir": { @@ -13564,19 +13443,19 @@ "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" }, "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "p-try": "^2.0.0" + "p-try": "^1.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "^2.0.0" + "p-limit": "^1.1.0" } }, "p-map": { @@ -13601,9 +13480,9 @@ } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, "package-json": { "version": "4.0.1", @@ -13662,9 +13541,9 @@ } }, "parse-asn1": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", - "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", @@ -13720,11 +13599,6 @@ "json-parse-better-errors": "^1.0.1" } }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" - }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", @@ -13939,46 +13813,6 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "requires": { "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - } } }, "pkg-up": { @@ -13987,46 +13821,6 @@ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "requires": { "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - } } }, "please-upgrade-node": { @@ -14312,9 +14106,9 @@ } }, "postcss-colormin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.2.tgz", - "integrity": "sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", "requires": { "browserslist": "^4.0.0", "color": "^3.0.0", @@ -14488,9 +14282,9 @@ } }, "postcss-discard-comments": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz", - "integrity": "sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", "requires": { "postcss": "^7.0.0" }, @@ -14995,9 +14789,9 @@ } }, "postcss-merge-longhand": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz", - "integrity": "sha512-hME10s6CSjm9nlVIcO1ukR7Jr5RisTaaC1y83jWCivpuBtPohA3pZE7cGTIVSYjXvLnXozHTiVOkG4dnnl756g==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", "requires": { "css-color-names": "0.0.4", "postcss": "^7.0.0", @@ -15026,9 +14820,9 @@ } }, "postcss-merge-rules": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz", - "integrity": "sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", "requires": { "browserslist": "^4.0.0", "caniuse-api": "^3.0.0", @@ -15098,9 +14892,9 @@ } }, "postcss-minify-gradients": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz", - "integrity": "sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", "requires": { "cssnano-util-get-arguments": "^4.0.0", "is-color-stop": "^1.0.0", @@ -15129,9 +14923,9 @@ } }, "postcss-minify-params": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz", - "integrity": "sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", "requires": { "alphanum-sort": "^1.0.0", "browserslist": "^4.0.0", @@ -15162,9 +14956,9 @@ } }, "postcss-minify-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz", - "integrity": "sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", "requires": { "alphanum-sort": "^1.0.0", "has": "^1.0.0", @@ -15294,9 +15088,9 @@ } }, "postcss-normalize-display-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz", - "integrity": "sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", "requires": { "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", @@ -15324,9 +15118,9 @@ } }, "postcss-normalize-positions": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz", - "integrity": "sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", "requires": { "cssnano-util-get-arguments": "^4.0.0", "has": "^1.0.0", @@ -15355,9 +15149,9 @@ } }, "postcss-normalize-repeat-style": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz", - "integrity": "sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", "requires": { "cssnano-util-get-arguments": "^4.0.0", "cssnano-util-get-match": "^4.0.0", @@ -15386,9 +15180,9 @@ } }, "postcss-normalize-string": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz", - "integrity": "sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", "requires": { "has": "^1.0.0", "postcss": "^7.0.0", @@ -15416,9 +15210,9 @@ } }, "postcss-normalize-timing-functions": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz", - "integrity": "sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", "requires": { "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", @@ -15507,9 +15301,9 @@ } }, "postcss-normalize-whitespace": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz", - "integrity": "sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" @@ -15536,9 +15330,9 @@ } }, "postcss-ordered-values": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz", - "integrity": "sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", "requires": { "cssnano-util-get-arguments": "^4.0.0", "postcss": "^7.0.0", @@ -15741,9 +15535,9 @@ } }, "postcss-reduce-initial": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz", - "integrity": "sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", "requires": { "browserslist": "^4.0.0", "caniuse-api": "^3.0.0", @@ -15772,9 +15566,9 @@ } }, "postcss-reduce-transforms": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz", - "integrity": "sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", "requires": { "cssnano-util-get-match": "^4.0.0", "has": "^1.0.0", @@ -15934,9 +15728,9 @@ } }, "postcss-svgo": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.1.tgz", - "integrity": "sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", "requires": { "is-svg": "^3.0.0", "postcss": "^7.0.0", @@ -16169,12 +15963,13 @@ } }, "prop-types": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", - "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" } }, "proxy-addr": { @@ -16359,9 +16154,9 @@ } }, "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "requires": { "safe-buffer": "^5.1.0" } @@ -16455,21 +16250,21 @@ } }, "react-app-polyfill": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-0.2.0.tgz", - "integrity": "sha512-uBfocjRsBNqhTaEywUZ2buzhHbor2jBbnhZY8VUZ7VZ3PXucIPZrPDAAmbclELhvl+x08PbynAGQfMYcBmqZ2w==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-0.2.1.tgz", + "integrity": "sha512-rcpR+WKmLOoYGDAxXaLlxl5Sw6jqbcD1qg2Okn1Ta2RHCxLuQv75B9Em2L2GvuOTx3lAxDpNl/TYGWbKnO/Aag==", "requires": { - "core-js": "2.5.7", + "core-js": "2.6.4", "object-assign": "4.1.1", "promise": "8.0.2", - "raf": "3.4.0", + "raf": "3.4.1", "whatwg-fetch": "3.0.0" }, "dependencies": { "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.4.tgz", + "integrity": "sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A==" }, "promise": { "version": "8.0.2", @@ -16478,82 +16273,57 @@ "requires": { "asap": "~2.0.6" } - }, - "raf": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", - "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", - "requires": { - "performance-now": "^2.1.0" - } } } }, "react-dev-utils": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-7.0.1.tgz", - "integrity": "sha512-AN/RKZKHsyB2FebKSyMLOecvjuzZ54lzsLYF8wNmwwgRA3dVC4vhYsafvME7JD4q7RUB0bejqFWjOS9QtN48Zg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-7.0.3.tgz", + "integrity": "sha512-KEFsH1CewnmddPLXIuU+QWKTH/hpJKZClL2+74XN54NkPnR2KnB5gGmuQ0E7DwcCkUpdMxxqBX+rB7aB5sZS4A==", "requires": { "@babel/code-frame": "7.0.0", "address": "1.0.3", - "browserslist": "4.1.1", - "chalk": "2.4.1", + "browserslist": "4.4.1", + "chalk": "2.4.2", "cross-spawn": "6.0.5", "detect-port-alt": "1.1.6", "escape-string-regexp": "1.0.5", "filesize": "3.6.1", "find-up": "3.0.0", - "global-modules": "1.0.0", - "globby": "8.0.1", + "global-modules": "2.0.0", + "globby": "8.0.2", "gzip-size": "5.0.0", - "immer": "1.7.2", - "inquirer": "6.2.0", + "immer": "1.10.0", + "inquirer": "6.2.1", "is-root": "2.0.0", - "loader-utils": "1.1.0", + "loader-utils": "1.2.3", "opn": "5.4.0", "pkg-up": "2.0.0", - "react-error-overlay": "^5.1.2", + "react-error-overlay": "^5.1.3", "recursive-readdir": "2.2.2", "shell-quote": "1.6.1", - "sockjs-client": "1.1.5", - "strip-ansi": "4.0.0", + "sockjs-client": "1.3.0", + "strip-ansi": "5.0.0", "text-table": "0.2.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" - }, - "browserslist": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.1.tgz", - "integrity": "sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q==", - "requires": { - "caniuse-lite": "^1.0.30000884", - "electron-to-chromium": "^1.3.62", - "node-releases": "^1.0.0-alpha.11" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==" }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "locate-path": "^3.0.0" } }, "inquirer": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", - "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", + "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", @@ -16566,31 +16336,46 @@ "run-async": "^2.2.0", "rxjs": "^6.1.0", "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", + "strip-ansi": "^5.0.0", "through": "^2.3.6" } }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "p-limit": "^2.0.0" } }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.0.0" } } } @@ -16607,9 +16392,9 @@ } }, "react-error-overlay": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.1.2.tgz", - "integrity": "sha512-7kEBKwU9R8fKnZJBRa5RSIfay4KJwnYvKB6gODGicUmDSAhQJ7Tdnll5S0RLtYrzRfMVXlqYw61rzrSpP4ThLQ==" + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.1.3.tgz", + "integrity": "sha512-GoqeM3Xadie7XUApXOjkY3Qhs8RkwB/Za4WMedBGrOKH1eTuKGyoAECff7jiVonJchOx6KZ9i8ILO5XIoHB+Tg==" }, "react-hint": { "version": "3.1.0", @@ -16617,9 +16402,9 @@ "integrity": "sha512-plCDiMmoV2b5f7dJExgjaANYpfQCYtaKPbxT3oEcrKbTl0RO7D9gvUZVQeW+OzsZjd+4/V3zATvN7+09r5ix0A==" }, "react-is": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.1.tgz", - "integrity": "sha512-ioMCzVDWvCvKD8eeT+iukyWrBGrA3DiFYkXfBsVYIRdaREZuBjENG+KjrikavCLasozqRWTwFUagU/O4vPpRMA==" + "version": "16.8.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.2.tgz", + "integrity": "sha512-D+NxhSR2HUCjYky1q1DwpNUD44cDpUXzSmmFyC3ug1bClcU/iDNy0YNn1iwme28fn+NFhpA13IndOd42CrFb+Q==" }, "react-lifecycles-compat": { "version": "3.0.4", @@ -17184,9 +16969,9 @@ } }, "realpath-native": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz", - "integrity": "sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", "requires": { "util.promisify": "^1.0.0" } @@ -17283,14 +17068,9 @@ } }, "regexp-tree": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.1.tgz", - "integrity": "sha512-HwRjOquc9QOwKTgbxvZTcddS5mlNlwePMQ3NFL8broajMLD5CXDAqas8Y5yxJH5QtZp5iRor3YCILd5pz71Cgw==", - "requires": { - "cli-table3": "^0.5.0", - "colors": "^1.1.2", - "yargs": "^12.0.5" - } + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", + "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==" }, "regexpp": { "version": "2.0.1", @@ -17445,21 +17225,21 @@ } }, "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", "requires": { - "lodash": "^4.13.1" + "lodash": "^4.17.11" } }, "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" } }, "require-directory": { @@ -17532,15 +17312,6 @@ "resolve-from": "^3.0.0" } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -18601,16 +18372,31 @@ } }, "sockjs-client": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz", - "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", "requires": { - "debug": "^2.6.6", - "eventsource": "0.1.6", - "faye-websocket": "~0.11.0", - "inherits": "^2.0.1", + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", "json3": "^3.3.2", - "url-parse": "^1.1.8" + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } } }, "sort-keys": { @@ -19073,9 +18859,9 @@ } }, "stylehacks": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.1.tgz", - "integrity": "sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", "requires": { "browserslist": "^4.0.0", "postcss": "^7.0.0", @@ -19159,13 +18945,6 @@ "stable": "~0.1.6", "unquote": "~1.1.1", "util.promisify": "~1.0.0" - }, - "dependencies": { - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" - } } }, "swarm-js": { @@ -19319,34 +19098,6 @@ "dev": true, "requires": { "execa": "^0.7.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } } }, "terser": { @@ -19391,6 +19142,44 @@ "pkg-dir": "^3.0.0" } }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -19813,6 +19602,11 @@ "commander": "~2.13.0", "source-map": "~0.6.1" } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" } } }, @@ -19957,9 +19751,9 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, "unorm": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz", - "integrity": "sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA=" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.5.0.tgz", + "integrity": "sha512-sMfSWoiRaXXeDZSXC+YRZ23H4xchQpwxjpw1tmfR+kgbBCaOgln4NI0LXejJIhnBuKINrB3WRn+ZI8IWssirVw==" }, "unpipe": { "version": "1.0.0", @@ -20261,9 +20055,9 @@ }, "dependencies": { "core-js": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.4.tgz", - "integrity": "sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", "dev": true }, "isemail": { @@ -21024,12 +20818,34 @@ "xregexp": "4.0.0" } }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "original": "^1.0.0" + "pump": "^3.0.0" } }, "import-local": { @@ -21041,11 +20857,74 @@ "resolve-cwd": "^2.0.0" } }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", + "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^2.0.0" + } + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -21054,19 +20933,6 @@ "find-up": "^3.0.0" } }, - "sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - } - }, "yargs": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", @@ -21451,9 +21317,9 @@ } }, "ws": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.3.tgz", - "integrity": "sha512-tbSxiT+qJI223AP4iLfQbkbxkwdFcneYinM2+x46Gx2wgvbaOMO36czfdfVUBRTHvzAMRhDd98sA5d/BuWbQdg==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", "requires": { "async-limiter": "~1.0.0" } @@ -21548,9 +21414,9 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, "yaeti": { "version": "0.0.6", @@ -21563,31 +21429,37 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "requires": { "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "os-locale": "^2.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", "string-width": "^2.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } } }, "yauzl": { diff --git a/package.json b/package.json index 7be707d0..14ba7716 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metronome-desktop-wallet", - "version": "1.2.0", + "version": "1.3.0", "author": { "name": "Autonomous Software", "email": "info@autonomous.sh", @@ -35,7 +35,7 @@ "electron-context-menu": "0.9.1", "electron-debug": "1.5.0", "electron-is-dev": "0.3.0", - "electron-log": "2.2.17", + "electron-log": "3.0.1", "electron-settings": "3.2.0", "electron-unhandled": "1.1.0", "electron-updater": "2.23.3", @@ -44,8 +44,8 @@ "json-stringify-safe": "5.0.1", "lodash": "4.17.11", "metronome-contracts": "2.0.0", - "metronome-wallet-core": "2.0.1", - "metronome-wallet-ui-logic": "2.1.0", + "metronome-wallet-core": "2.0.2", + "metronome-wallet-ui-logic": "3.2.0", "nedb": "1.8.0", "p-timeout": "2.0.1", "qrcode.react": "0.7.2", diff --git a/patches/web3-core-method+1.0.0-beta.37.patch b/patches/web3-core-method+1.0.0-beta.37.patch index 7de327a9..4e306a76 100644 --- a/patches/web3-core-method+1.0.0-beta.37.patch +++ b/patches/web3-core-method+1.0.0-beta.37.patch @@ -1,7 +1,26 @@ patch-package --- a/node_modules/web3-core-method/src/index.js +++ b/node_modules/web3-core-method/src/index.js -@@ -533,7 +533,16 @@ Method.prototype.buildCall = function() { +@@ -200,6 +200,7 @@ Method.prototype._confirmTransaction = function (defer, result, payload) { + intervalId = null, + receiptJSON = '', + gasProvided = (_.isObject(payload.params[0]) && payload.params[0].gas) ? payload.params[0].gas : null, ++ isContractCall = _.isObject(payload.params[0]) && !!payload.params[0].data, + isContractDeployment = _.isObject(payload.params[0]) && + payload.params[0].data && + payload.params[0].from && +@@ -348,8 +349,8 @@ Method.prototype._confirmTransaction = function (defer, result, payload) { + if (!isContractDeployment && !promiseResolved) { + + if(!receipt.outOfGas && +- (!gasProvided || gasProvided !== receipt.gasUsed) && +- (receipt.status === true || receipt.status === '0x1' || typeof receipt.status === 'undefined')) { ++ (!gasProvided || gasProvided !== utils.numberToHex(receipt.gasUsed) || !isContractCall || (isContractCall && receipt.events)) && ++ (receipt.status === true || receipt.status === '0x1' || receipt.status === null || typeof receipt.status === 'undefined')) { + defer.eventEmitter.emit('receipt', receipt); + defer.resolve(receipt); + +@@ -533,7 +534,16 @@ Method.prototype.buildCall = function() { // If wallet was found, sign tx, and send using sendRawTransaction if (wallet && wallet.privateKey) { diff --git a/patches/web3-eth-accounts+1.0.0-beta.37.patch b/patches/web3-eth-accounts+1.0.0-beta.37.patch new file mode 100644 index 00000000..d6b789e5 --- /dev/null +++ b/patches/web3-eth-accounts+1.0.0-beta.37.patch @@ -0,0 +1,12 @@ +patch-package +--- a/node_modules/web3-eth-accounts/src/index.js ++++ b/node_modules/web3-eth-accounts/src/index.js +@@ -69,7 +69,7 @@ var Accounts = function Accounts() { + var _ethereumCall = [ + new Method({ + name: 'getId', +- call: 'net_version', ++ call: 'eth_chainId', + params: 0, + outputFormatter: utils.hexToNumber + }), diff --git a/public/config/etcMordenLocal.js b/public/config/etcMordenLocal.js new file mode 100644 index 00000000..31fb9291 --- /dev/null +++ b/public/config/etcMordenLocal.js @@ -0,0 +1,29 @@ +'use strict' + +const MetronomeContracts = require('metronome-contracts') +const contracts = MetronomeContracts.morden + +module.exports = { + displayName: 'Morden (Local)', + chainId: 2, + symbol: 'ETC', + + // contracts addresses + tokenPorterAddress: contracts.TokenPorter.address, + converterAddress: contracts.AutonomousConverter.address, + validatorAddress: contracts.Validator.address, + metTokenAddress: contracts.METToken.address, + auctionAddress: contracts.Auctions.address, + + // urls + explorerUrl: 'https://mordenexplorer.ethertrack.io/tx/{{hash}}', + indexerUrl: 'http://localhost:3015', + metApiUrl: 'http://localhost:3012/', + wsApiUrl: 'ws://localhost:8556', + + // defauls + coinDefaultGasLimit: '21000', + metDefaultGasLimit: '250000', + defaultGasPrice: '1000000000', + maxGasPrice: '20000000000000000' +} diff --git a/public/config/ethMainnet.js b/public/config/ethMainnet.js index 5bfbde77..74fbc1f2 100644 --- a/public/config/ethMainnet.js +++ b/public/config/ethMainnet.js @@ -4,9 +4,9 @@ const MetronomeContracts = require('metronome-contracts') const contracts = MetronomeContracts.mainnet module.exports = { - displayName: 'Ethereum', // visible in select control + displayName: 'Ethereum', chainId: 1, - symbol: 'ETH', // visible next to amounts + symbol: 'ETH', // contracts addresses tokenPorterAddress: contracts.TokenPorter.address, @@ -16,7 +16,7 @@ module.exports = { auctionAddress: contracts.Auctions.address, // urls - explorerUrl: 'https://explorer.metronome.io', + explorerUrl: 'https://etherscan.io/tx/{{hash}}', indexerUrl: 'https://indexer.metronome.io', metApiUrl: 'https://api.metronome.io/', wsApiUrl: 'wss://eth.wallet.metronome.io:8546', diff --git a/public/config/ethRopstenLocal.js b/public/config/ethRopstenLocal.js index d29cec27..1923e18e 100644 --- a/public/config/ethRopstenLocal.js +++ b/public/config/ethRopstenLocal.js @@ -4,9 +4,9 @@ const MetronomeContracts = require('metronome-contracts') const contracts = MetronomeContracts.ropsten module.exports = { - displayName: 'Ropsten (Local)', // visible in select control + displayName: 'Ropsten (Local)', chainId: 3, - symbol: 'ETH', // visible next to amounts + symbol: 'ETH', // contracts addresses tokenPorterAddress: contracts.TokenPorter.address, @@ -16,7 +16,7 @@ module.exports = { auctionAddress: contracts.Auctions.address, // urls - explorerUrl: 'http://localhost:3004', + explorerUrl: 'https://ropsten.etherscan.io/tx/{{hash}}', indexerUrl: 'http://localhost:3005', metApiUrl: 'http://localhost:3002/', wsApiUrl: 'ws://localhost:8546', diff --git a/public/main/client/auth.js b/public/main/client/auth.js index 0202537d..4a037498 100644 --- a/public/main/client/auth.js +++ b/public/main/client/auth.js @@ -1,6 +1,6 @@ 'use strict' -const logger = require('electron-log') +const logger = require('../../logger.js') const { getPasswordHash, setPasswordHash } = require('./settings') const { @@ -12,8 +12,8 @@ function setPassword (password) { const passwordHash = getPasswordHash() if (!passwordHash) { logger.info('No password set, using current as default') - return hash(password).then(setPasswordHash) } + return hash(password).then(setPasswordHash) } function isValidPassword (password) { diff --git a/public/main/client/database.js b/public/main/client/database.js index 40463b09..5ea61bb8 100644 --- a/public/main/client/database.js +++ b/public/main/client/database.js @@ -4,9 +4,9 @@ const { app } = require('electron') const { promisify } = require('util') const { sum, upperFirst } = require('lodash') const Datastore = require('nedb') -const logger = require('electron-log') const path = require('path') +const logger = require('../../logger') const config = require('../../config') const promisifyMethods = methods => diff --git a/public/main/client/handlers/multi-core.js b/public/main/client/handlers/multi-core.js index 6151b28d..4bfa82aa 100644 --- a/public/main/client/handlers/multi-core.js +++ b/public/main/client/handlers/multi-core.js @@ -52,21 +52,42 @@ function onLoginSubmit (data, cores) { }) } -const findCore = (cores, chain) => cores.find(e => e.chain === chain) +const findCoreByChainName = (cores, chain) => cores.find(e => e.chain === chain) + +const findCoreBySymbol = (cores, ticker) => + cores.find(e => e.config.symbol === ticker) function getPortFees (data, cores) { - const exportCore = findCore(cores, data.chain) + const exportCore = findCoreByChainName(cores, data.chain) return singleCore .getExportMetFee(data, exportCore) .then(fee => singleCore - .estimateExportMetGas(Object.assign({}, data, { fee }), exportCore) + .getExportGasLimit(Object.assign({}, data, { fee }), exportCore) .then(({ gasLimit }) => ({ exportGasLimit: gasLimit, fee })) ) } +const withMerkleRoot = fn => + function (data, cores) { + const exportCore = findCoreBySymbol(cores, data.originChain) + const importCore = findCoreByChainName(cores, data.chain) + return singleCore + .getMerkleRoot(data.burnSequence, exportCore) + .then(function (root) { + const importData = Object.assign({}, data, { root }) + return fn(importData, importCore) + }) + } + +const importMetronome = (data, cores) => + withMerkleRoot(singleCore.importMetronome)(data, cores) + +const getImportMetGas = (data, cores) => + withMerkleRoot(singleCore.getImportGasLimit)(data, cores) + function portMetronome (data, cores) { - const exportCore = findCore(cores, data.chain) + const exportCore = findCoreByChainName(cores, data.chain) const exportData = Object.assign({}, data, { destinationChain: config.chains[data.destinationChain].symbol, destinationMetAddress: config.chains[data.destinationChain].metTokenAddress, @@ -75,19 +96,20 @@ function portMetronome (data, cores) { return singleCore .exportMetronome(exportData, exportCore) .then(function ({ receipt }) { - const parsedExportReceipt = flatten(Object.keys(receipt.events) - .filter(e => !receipt.events[e].event) // Filter already parsed event keys - .map(e => receipt.events[e]) // Get not parsed events - .map(e => exportCore.coreApi.explorer.tryParseEventLog(e))) // Try to parse each event - .find(e => e.parsed.event === 'LogExportReceipt') // Get LogExportReceipt event + const parsedExportReceipt = flatten( + Object.keys(receipt.events) + .filter(e => !receipt.events[e].event) // Filter already parsed event keys + .map(e => receipt.events[e]) // Get not parsed events + .map(e => exportCore.coreApi.explorer.tryParseEventLog(e)) // Try to parse each event + ).find(e => e.parsed.event === 'LogExportReceipt') // Get LogExportReceipt event if (!parsedExportReceipt || !parsedExportReceipt.parsed) { return Promise.reject( new WalletError('There was an error trying to parse export receipt') ) } const { returnValues } = parsedExportReceipt.parsed - const importCore = findCore(cores, data.destinationChain) - const importData = Object.assign({}, data, { + const importCore = findCoreByChainName(cores, data.destinationChain) + const importData = { blockTimestamp: returnValues.blockTimestamp, burnSequence: returnValues.burnSequence, currentBurnHash: returnValues.currentBurnHash, @@ -101,15 +123,31 @@ function portMetronome (data, cores) { originChain: config.chains[data.chain].symbol, previousBurnHash: returnValues.prevBurnHash, supply: returnValues.supplyOnAllChains, - value: returnValues.amountToBurn - }) - return singleCore.importMetronome(importData, importCore) + value: returnValues.amountToBurn, + password: data.password, + walletId: data.walletId + } + return singleCore + .getMerkleRoot(returnValues.burnSequence, exportCore) + .then(function (root) { + Object.assign(importData, { root }) + return singleCore + .getImportGasLimit(importData, importCore) + .then(({ gasLimit }) => + singleCore.importMetronome( + Object.assign({}, importData, { gas: gasLimit }), + importCore + ) + ) + }) }) } module.exports = { onboardingCompleted, recoverFromMnemonic, + importMetronome, + getImportMetGas, portMetronome, onLoginSubmit, getPortFees diff --git a/public/main/client/handlers/no-core.js b/public/main/client/handlers/no-core.js index adbf844f..b78bf80e 100644 --- a/public/main/client/handlers/no-core.js +++ b/public/main/client/handlers/no-core.js @@ -2,9 +2,10 @@ const restart = require('../electron-restart') const dbManager = require('../database') -const logger = require('electron-log') +const logger = require('../../../logger') const storage = require('../storage') const auth = require('../auth') +const wallet = require('../wallet') const validatePassword = data => auth.isValidPassword(data) @@ -18,8 +19,23 @@ function clearCache () { const persistState = data => storage.persistState(data).then(() => true) +function changePassword ({ oldPassword, newPassword }) { + return validatePassword(oldPassword) + .then(function (isValid) { + if (isValid) { + wallet.getWallets().forEach(function (walletId) { + const seed = wallet.getSeed(walletId, oldPassword) + auth.setPassword(newPassword) + wallet.setSeed(seed, newPassword) + }) + } + return isValid + }) +} + module.exports = { validatePassword, + changePassword, persistState, clearCache } diff --git a/public/main/client/handlers/single-core.js b/public/main/client/handlers/single-core.js index e03b4a32..9e9fce84 100644 --- a/public/main/client/handlers/single-core.js +++ b/public/main/client/handlers/single-core.js @@ -1,8 +1,8 @@ 'use strict' -const logger = require('electron-log') const pTimeout = require('p-timeout') +const logger = require('../../../logger') const auth = require('../auth') const config = require('../../../config') const wallet = require('../wallet') @@ -114,7 +114,7 @@ const sendMet = (data, { coreApi }) => const getExportMetFee = (data, { coreApi }) => coreApi.metronome.getExportMetFee(data) -const estimateExportMetGas = (data, { coreApi }) => +const getExportGasLimit = (data, { coreApi }) => coreApi.metronome.estimateExportMetGas( Object.assign({}, data, { destinationChain: config.chains[data.destinationChain].symbol, @@ -124,7 +124,7 @@ const estimateExportMetGas = (data, { coreApi }) => }) ) -const estimateImportMetGas = (data, { coreApi }) => +const getImportGasLimit = (data, { coreApi }) => coreApi.metronome.estimateImportMetGas(data) const exportMetronome = (data, core) => @@ -133,9 +133,8 @@ const exportMetronome = (data, core) => const importMetronome = (data, core) => withAuth(core.coreApi.metronome.importMet)(data, core) -// TODO: Implement retry method -// eslint-disable-next-line no-unused-vars -const retryImport = (data, core) => Promise.resolve({}) +const getMerkleRoot = (data, { coreApi }) => + coreApi.metronome.getMerkleRoot(data) module.exports = { refreshAllTransactions, @@ -143,20 +142,20 @@ module.exports = { getConvertCoinGasLimit, getConvertMetEstimate, getConvertMetGasLimit, - estimateExportMetGas, - estimateImportMetGas, refreshTransaction, getAuctionGasLimit, + getExportGasLimit, + getImportGasLimit, getTokensGasLimit, getExportMetFee, exportMetronome, importMetronome, + getMerkleRoot, buyMetronome, createWallet, getGasLimit, getGasPrice, convertCoin, - retryImport, convertMet, openWallet, sendMet, diff --git a/public/main/client/index.js b/public/main/client/index.js index a02b87f2..fd6fecfe 100644 --- a/public/main/client/index.js +++ b/public/main/client/index.js @@ -2,9 +2,9 @@ const { ipcMain } = require('electron') const createCore = require('metronome-wallet-core') -const logger = require('electron-log') const stringify = require('json-stringify-safe') +const logger = require('../../logger') const subscriptions = require('./subscriptions') const settings = require('./settings') const storage = require('./storage') @@ -107,15 +107,6 @@ function createClient (config) { })) ipcMain.on('ui-ready', function (webContent, args) { - cores.forEach(function (core) { - const { emitter, events, coreApi } = startCore(core, webContent) - core.emitter = emitter - core.events = events - core.coreApi = coreApi - }) - - subscriptions.subscribe(cores) - const onboardingComplete = !!settings.getPasswordHash() storage.getState() .catch(function (err) { @@ -136,6 +127,18 @@ function createClient (config) { .catch(function (err) { logger.error('Could not send ui-ready message back', err.message) }) + .then(function () { + cores.forEach(function (core) { + const { emitter, events, coreApi } = startCore(core, webContent) + core.emitter = emitter + core.events = events + core.coreApi = coreApi + }) + subscriptions.subscribe(cores) + }) + .catch(function (err) { + logger.error('Could not start cores', err.message) + }) }) ipcMain.on('ui-unload', function () { diff --git a/public/main/client/settings/index.js b/public/main/client/settings/index.js index cce79626..ef593269 100644 --- a/public/main/client/settings/index.js +++ b/public/main/client/settings/index.js @@ -1,10 +1,10 @@ 'use strict' -const logger = require('electron-log') const settings = require('electron-settings') const utils = require('web3-utils') const { merge } = require('lodash') +const logger = require('../../../logger') const restart = require('../electron-restart') const { getDb } = require('../database') diff --git a/public/main/client/subscriptions/index.js b/public/main/client/subscriptions/index.js index 9e24e7bc..37a64cdd 100644 --- a/public/main/client/subscriptions/index.js +++ b/public/main/client/subscriptions/index.js @@ -10,9 +10,9 @@ function subscribe (cores) { subscribeWithoutCore() } -function unsubscribe () { +function unsubscribe (cores) { + cores.forEach(unsubscribeSingleCore) unsubscribeMultiCore() - unsubscribeSingleCore() unsubscribeWithoutCore() } diff --git a/public/main/client/subscriptions/multi-core.js b/public/main/client/subscriptions/multi-core.js index f0371f22..3c5e8503 100644 --- a/public/main/client/subscriptions/multi-core.js +++ b/public/main/client/subscriptions/multi-core.js @@ -8,7 +8,9 @@ const withCores = cores => fn => data => fn(data, cores) const listeners = { 'recover-from-mnemonic': handlers.recoverFromMnemonic, 'onboarding-completed': handlers.onboardingCompleted, + 'get-import-gas-limit': handlers.getImportMetGas, 'port-metronome': handlers.portMetronome, + 'retry-import': handlers.importMetronome, 'login-submit': handlers.onLoginSubmit, 'get-port-fees': handlers.getPortFees } diff --git a/public/main/client/subscriptions/no-core.js b/public/main/client/subscriptions/no-core.js index 9cd98166..6aa54321 100644 --- a/public/main/client/subscriptions/no-core.js +++ b/public/main/client/subscriptions/no-core.js @@ -5,6 +5,7 @@ const utils = require('./utils') const listeners = { 'validate-password': handlers.validatePassword, + 'change-password': handlers.changePassword, 'persist-state': handlers.persistState, 'clear-cache': handlers.clearCache } diff --git a/public/main/client/subscriptions/single-core.js b/public/main/client/subscriptions/single-core.js index 5615e091..93e6df0e 100644 --- a/public/main/client/subscriptions/single-core.js +++ b/public/main/client/subscriptions/single-core.js @@ -14,6 +14,7 @@ const listeners = { 'get-auction-gas-limit': handlers.getAuctionGasLimit, 'get-tokens-gas-limit': handlers.getTokensGasLimit, 'refresh-transaction': handlers.refreshTransaction, + 'get-export-gas-limit': handlers.getExportMetGas, 'buy-metronome': handlers.buyMetronome, 'get-gas-limit': handlers.getGasLimit, 'get-gas-price': handlers.getGasPrice, @@ -23,16 +24,19 @@ const listeners = { 'send-met': handlers.sendMet } +const coreListeners = {} + // Subscribe to messages where only one particular core has to react function subscribeSingleCore (core) { + coreListeners[core.chain] = {} Object.keys(listeners).forEach(function (key) { - listeners[key] = withCore(core)(listeners[key]) + coreListeners[core.chain][key] = withCore(core)(listeners[key]) }) - utils.subscribeTo(listeners, core.chain) + utils.subscribeTo(coreListeners[core.chain], core.chain) } -const unsubscribeSingleCore = () => - utils.unsubscribeTo(listeners) +const unsubscribeSingleCore = core => + utils.unsubscribeTo(coreListeners[core.chain]) module.exports = { subscribeSingleCore, unsubscribeSingleCore } diff --git a/public/main/client/subscriptions/utils.js b/public/main/client/subscriptions/utils.js index c22ba76e..f4e92f30 100644 --- a/public/main/client/subscriptions/utils.js +++ b/public/main/client/subscriptions/utils.js @@ -1,9 +1,9 @@ 'use strict' const { ipcMain } = require('electron') -const logger = require('electron-log') const stringify = require('json-stringify-safe') +const logger = require('../../../logger') const WalletError = require('../WalletError') function getLogData (data) { diff --git a/public/main/main-window.js b/public/main/main-window.js index 5db4a72a..dedb76c5 100644 --- a/public/main/main-window.js +++ b/public/main/main-window.js @@ -3,10 +3,10 @@ const { app, BrowserWindow, Notification } = require('electron') const { autoUpdater } = require('electron-updater') const isDev = require('electron-is-dev') -const logger = require('electron-log') const path = require('path') const windowStateKeeper = require('electron-window-state') +const logger = require('../logger') const analytics = require('../analytics') const restart = require('./client/electron-restart') @@ -36,6 +36,9 @@ function initAutoUpdate () { } autoUpdater.checkForUpdates() + .catch(function (err) { + logger.warn('Could not find updates', err.message) + }) autoUpdater.on('checking-for-update', () => logger.info('Checking for update...')) autoUpdater.on('update-available', () => logger.info('Update available.')) diff --git a/public/main/preload.js b/public/main/preload.js index 77818338..8c7dcde6 100644 --- a/public/main/preload.js +++ b/public/main/preload.js @@ -1,6 +1,7 @@ 'use strict' const { ipcRenderer, clipboard, shell, remote } = require('electron') +const isDev = require('electron-is-dev') // @see http://electronjs.org/docs/tutorial/security#2-disable-nodejs-integration-for-remote-content @@ -16,6 +17,8 @@ window.openLink = function (url) { return shell.openExternal(url) } +window.isDev = isDev + window.ipcRenderer = { removeListener (eventName, listener) { return ipcRenderer.removeListener(eventName, listener) diff --git a/src/client/index.js b/src/client/index.js index 0a65fb27..fc5584d9 100644 --- a/src/client/index.js +++ b/src/client/index.js @@ -20,7 +20,12 @@ function createClient(createStore) { store.subscribe( debounce( function() { - utils.forwardToMainProcess('persist-state')(store.getState()) + utils + .forwardToMainProcess('persist-state')(store.getState()) + .catch(err => + // eslint-disable-next-line no-console + console.warn(`Error persisting state: ${err.message}`) + ) }, debounceTime, { maxWait: 2 * debounceTime } @@ -38,10 +43,7 @@ function createClient(createStore) { 'https://github.com/autonomoussoftware/documentation/blob/master/FAQ.md#metronome-faq' ) - const onExplorerLinkClick = transactionHash => - window.openLink( - `https://explorer.metronome.io/transactions/${transactionHash}` - ) + const onLinkClick = url => window.openLink(url) const getStringEntropy = fastPasswordEntropy @@ -90,6 +92,8 @@ function createClient(createStore) { onOnboardingCompleted: utils.forwardToMainProcess('onboarding-completed'), recoverFromMnemonic: utils.forwardToMainProcess('recover-from-mnemonic'), getAuctionGasLimit: utils.forwardToMainProcess('get-auction-gas-limit'), + getImportGasLimit: utils.forwardToMainProcess('get-import-gas-limit'), + getExportGasLimit: utils.forwardToMainProcess('get-export-gas-limit'), getTokensGasLimit: utils.forwardToMainProcess('get-tokens-gas-limit'), portMetronome: utils.forwardToMainProcess('port-metronome', 750000), validatePassword: utils.forwardToMainProcess('validate-password'), @@ -97,6 +101,7 @@ function createClient(createStore) { convertCoin: utils.forwardToMainProcess('convert-coin', 750000), retryImport: utils.forwardToMainProcess('retry-import', 750000), convertMet: utils.forwardToMainProcess('convert-met', 750000), + changePassword: utils.forwardToMainProcess('change-password'), onLoginSubmit: utils.forwardToMainProcess('login-submit'), getPortFees: utils.forwardToMainProcess('get-port-fees'), getGasLimit: utils.forwardToMainProcess('get-gas-limit'), @@ -111,12 +116,12 @@ function createClient(createStore) { ...forwardedMethods, isValidMnemonic: keys.isValidMnemonic, createMnemonic: keys.createMnemonic, - onExplorerLinkClick, onTermsLinkClick, getStringEntropy, copyToClipboard, onHelpLinkClick, getAppVersion: window.getAppVersion, + onLinkClick, onInit, store } diff --git a/src/components/ChangePassword.js b/src/components/ChangePassword.js new file mode 100644 index 00000000..fbb38e12 --- /dev/null +++ b/src/components/ChangePassword.js @@ -0,0 +1,143 @@ +import withChangePasswordState from 'metronome-wallet-ui-logic/src/hocs/withChangePasswordState' +import { withRouter } from 'react-router-dom' +import * as utils from 'metronome-wallet-ui-logic/src/utils' +import PropTypes from 'prop-types' +import styled from 'styled-components' +import React from 'react' + +import { EntropyMeter, DarkLayout, TextInput, Btn, Sp } from './common' +import { ToastsContext } from '../components/toasts' + +const Container = styled.div` + padding: 3.2rem 2.4rem; + max-width: 50rem; + + @media (min-width: 800px) { + padding: 3.2rem 4.8rem; + } +` + +const PasswordMessage = styled.div` + font-size: 1.6rem; + font-weight: 600; + line-height: 1.5; + margin-top: 3.2rem; +` + +const Green = styled.div` + display: inline-block; + color: ${p => p.theme.colors.success}; +` + +const ErrorMessage = styled.div` + color: ${p => p.theme.colors.danger} + font-size: 1.2rem; + margin-top: 2.4rem; + margin-bottom: -3.9rem; +` + +class ChangePassword extends React.Component { + static propTypes = { + requiredPasswordEntropy: PropTypes.number.isRequired, + newPasswordAgain: PropTypes.string, + onInputChange: PropTypes.func.isRequired, + newPassword: PropTypes.string, + oldPassword: PropTypes.string, + onSubmit: PropTypes.func.isRequired, + history: PropTypes.shape({ + push: PropTypes.func.isRequired + }).isRequired, + status: PropTypes.oneOf(['init', 'pending', 'success', 'failure']), + errors: utils.errorPropTypes( + 'newPasswordAgain', + 'newPassword', + 'oldPassword' + ), + error: PropTypes.string + } + + static contextType = ToastsContext + + handleSubmitAndNavigate = e => { + e.preventDefault() + this.props.onSubmit() + } + + componentDidUpdate(prevProps) { + if (this.props.status === 'success' && prevProps.status !== 'success') { + this.props.history.push('/tools') + this.context.toast('success', 'Password successfully changed') + } + } + + render() { + return ( + + + + + + + + Enter a strong password until the meter turns green + . + + + + {!this.props.errors.newPassword && ( + + )} + + + + + {this.props.error && ( + {this.props.error} + )} + + + Change Password + + + + + + ) + } +} + +export default withRouter(withChangePasswordState(ChangePassword)) diff --git a/src/components/Loading.js b/src/components/Loading.js index 13f5c03a..9a46deb8 100644 --- a/src/components/Loading.js +++ b/src/components/Loading.js @@ -11,7 +11,7 @@ const ChecklistContainer = styled(Flex.Row)` ` const Title = styled.div` - display: none; // remove this line when reinserting ChainSelector + display: ${p => (p.isMultiChain ? 'block' : 'none')}; font-weight: 600; font-size: 0.9rem; letter-spacing: 1.6px; @@ -21,11 +21,12 @@ const Title = styled.div` ` const Checklist = styled.div` - // padding-left: 4.8rem; // add this line when reinserting ChainSelector + padding-left: ${p => (p.isMultiChain ? '4.8rem' : 0)}; ` class Loading extends React.Component { static propTypes = { + isMultiChain: PropTypes.bool.isRequired, chainsStatus: PropTypes.objectOf( PropTypes.shape({ hasBlockHeight: PropTypes.bool, @@ -45,8 +46,10 @@ class Loading extends React.Component { {Object.keys(this.props.chainsStatus).map(chainName => ( - {this.props.chainsStatus[chainName].displayName} - + + {this.props.chainsStatus[chainName].displayName} + + ( - + @@ -50,16 +52,29 @@ export const layout = ( - {/* */} + + {isMultiChain && } ) +Layout.propTypes = { + isMultiChain: PropTypes.bool.isRequired +} + export default class Router extends React.Component { + static propTypes = { + isMultiChain: PropTypes.bool.isRequired + } + render() { - return {layout} + return ( + + + + ) } } diff --git a/src/components/Web3ConnectionNotifier.js b/src/components/Web3ConnectionNotifier.js index 04d66763..203cb934 100644 --- a/src/components/Web3ConnectionNotifier.js +++ b/src/components/Web3ConnectionNotifier.js @@ -1,5 +1,4 @@ -import * as selectors from 'metronome-wallet-ui-logic/src/selectors' -import { connect } from 'react-redux' +import withConnectionState from 'metronome-wallet-ui-logic/src/hocs/withConnectionState' import PropTypes from 'prop-types' import React from 'react' @@ -14,7 +13,10 @@ class Web3ConnectionNotifier extends React.Component { static contextType = ToastsContext componentDidUpdate(prevProps) { - // Only lauch success toast when recovering from a disconnection + // Avoid launching toasts when changing chains + if (prevProps.chainName !== this.props.chainName) return + + // Only launch success toast when recovering from a disconnection if (prevProps.isConnected === false && this.props.isConnected === true) { this.context.toast( 'success', @@ -39,20 +41,8 @@ class Web3ConnectionNotifier extends React.Component { } } -const mapStateToProps = state => ({ - // default to null until initial state is received - isConnected: state.chains.active - ? selectors.getChainConnectionStatus(state) - : null, - - // default to null until initial state is received - chainName: state.chains.active - ? selectors.getActiveChainDisplayName(state) - : null -}) - // We have to do this indirection because React 16.7.0 doesn't support using // both contextType and Redux context at the same time -export default connect(mapStateToProps)(({ isConnected, chainName }) => ( +export default withConnectionState(({ isConnected, chainName }) => ( )) diff --git a/src/components/auction/Auction.js b/src/components/auction/Auction.js index 9b505f6d..16babcb5 100644 --- a/src/components/auction/Auction.js +++ b/src/components/auction/Auction.js @@ -47,6 +47,13 @@ const BuyBtn = styled(Btn)` } ` +const LastUpdatedContainer = styled.div` + padding: 0 2.4rem 3.2rem; + @media (min-width: 800px) { + padding: 0 4.8rem 3.2rem; + } +` + class Auction extends React.Component { static propTypes = { countdownTargetTimestamp: PropTypes.number, @@ -108,9 +115,9 @@ class Auction extends React.Component { )} - + - + ) } diff --git a/src/components/auction/Stats.js b/src/components/auction/Stats.js index b873b4d0..e244b123 100644 --- a/src/components/auction/Stats.js +++ b/src/components/auction/Stats.js @@ -19,10 +19,14 @@ const Container = styled.div` const Label = styled.div` line-height: 4rem; - font-size: 2.4rem; + font-size: 1.6rem; text-shadow: 0 1px 1px ${p => p.theme.colors.darkShade}; margin-right: 1.6rem; white-space: nowrap; + + @media (min-width: 1100px) { + font-size: 2.4rem; + } ` const Badge = styled.div` diff --git a/src/components/onboarding/EntropyMeter.js b/src/components/common/EntropyMeter.js similarity index 97% rename from src/components/onboarding/EntropyMeter.js rename to src/components/common/EntropyMeter.js index e756f838..6aa10ff6 100644 --- a/src/components/onboarding/EntropyMeter.js +++ b/src/components/common/EntropyMeter.js @@ -12,6 +12,7 @@ import React from 'react' * ratio >= 1 -> green * * @param {number} ratio passwordEntropy / targetEntropy ratio + * @returns {number} interpolated CSS hue value between red & green */ function getHue(ratio) { // Hues are adapted to match the theme's success and danger colors diff --git a/src/components/common/index.js b/src/components/common/index.js index 29087093..f0feb775 100644 --- a/src/components/common/index.js +++ b/src/components/common/index.js @@ -3,6 +3,7 @@ import TextInput, { Label } from './TextInput' import ConfirmationWizard from './ConfirmationWizard' import DisplayValue from './DisplayValue' import AmountFields from './AmountFields' +import EntropyMeter from './EntropyMeter' import LastUpdated from './LastUpdated' import ItemFilter from './ItemFilter' import DarkLayout from './DarkLayout' @@ -22,6 +23,7 @@ export { ConfirmationWizard, DisplayValue, AmountFields, + EntropyMeter, LastUpdated, ItemFilter, DarkLayout, diff --git a/src/components/common/receipt/AmountRow.js b/src/components/common/receipt/AmountRow.js index 52e883f4..eba4fec6 100644 --- a/src/components/common/receipt/AmountRow.js +++ b/src/components/common/receipt/AmountRow.js @@ -39,6 +39,7 @@ export default class AmountRow extends React.Component { fromValue: PropTypes.string, toValue: PropTypes.string, txType: PropTypes.oneOf([ + 'import-requested', 'converted', 'exported', 'imported', @@ -51,6 +52,7 @@ export default class AmountRow extends React.Component { value: PropTypes.string } + // eslint-disable-next-line complexity render() { return ( @@ -105,6 +107,7 @@ export default class AmountRow extends React.Component { maxSize="2rem" value={this.props.value} post={ + this.props.txType === 'import-requested' || this.props.txType === 'imported' || this.props.txType === 'exported' ? ' MET' diff --git a/src/components/common/receipt/Receipt.js b/src/components/common/receipt/Receipt.js index 31f160ce..aed27159 100644 --- a/src/components/common/receipt/Receipt.js +++ b/src/components/common/receipt/Receipt.js @@ -4,10 +4,10 @@ import TimeAgo from 'metronome-wallet-ui-logic/src/components/TimeAgo' import styled from 'styled-components' import React from 'react' +import { BaseBtn, Btn } from '../Btn' import DisplayValue from '../DisplayValue' import AmountRow from './AmountRow' import TypeRow from './TypeRow' -import { Btn } from '../Btn' const Container = styled.div` background-color: ${p => p.theme.colors.medium}; @@ -70,6 +70,17 @@ const ExplorerBtn = styled(Btn)` border-radius: 0; ` +const InspectBtn = styled(BaseBtn)` + letter-spacing: 1.4px; + color: ${p => p.theme.colors.weak}; + width: 100%; + font-size: 1.1rem; + line-height: 2; + padding: 0 1rem; + margin: -1rem 0 1rem; + text-transform: uppercase; +` + export default class Receipt extends React.Component { static propTypes = { onExplorerLinkClick: PropTypes.func.isRequired, @@ -91,12 +102,12 @@ export default class Receipt extends React.Component { return ( - {tx.txType !== 'unknown' && ( + {tx.txType !== 'unknown' && tx.txType !== 'attestation' && ( )} @@ -114,14 +125,17 @@ export default class Receipt extends React.Component { - {tx.txType === 'exported' && tx.portFee && ( - - Fee - - - - - )} + {(tx.txType === 'import-requested' || + tx.txType === 'imported' || + tx.txType === 'exported') && + tx.portFee && ( + + Fee + + + + + )} {tx.txType === 'received' && tx.from && ( @@ -146,6 +160,27 @@ export default class Receipt extends React.Component { )} + {tx.txType === 'import-requested' && tx.importedFrom && ( + + + {this.props.isPending + ? 'Pending import request' + : 'Import requested'}{' '} + from + + {tx.importedFrom} blockchain + + )} + + {tx.txType === 'imported' && tx.importedFrom && ( + + + {this.props.isPending ? 'Pending Import' : 'Imported'} from + + {tx.importedFrom} blockchain + + )} + {tx.portDestinationAddress && ( Destination Address @@ -158,7 +193,7 @@ export default class Receipt extends React.Component { {this.props.confirmations} - {tx.txType === 'exported' && tx.portBurnHash && ( + {tx.portBurnHash && ( Port burn hash {tx.portBurnHash} @@ -183,11 +218,14 @@ export default class Receipt extends React.Component { {tx.blockNumber} )} + {tx.meta && window.isDev && ( + // eslint-disable-next-line no-alert + alert(JSON.stringify(tx.meta, null, 2))}> + Inspect raw metadata + + )} - this.props.onExplorerLinkClick(tx.hash)} - block - > + VIEW IN EXPLORER diff --git a/src/components/common/receipt/TypeRow.js b/src/components/common/receipt/TypeRow.js index dd76f263..d8643e0c 100644 --- a/src/components/common/receipt/TypeRow.js +++ b/src/components/common/receipt/TypeRow.js @@ -39,6 +39,8 @@ export default class TypeRow extends React.Component { ? 'Allowance canceled' : this.props.isApproval ? 'Allowance set' + : this.props.txType === 'import-requested' + ? 'Import Request' : this.props.txType} diff --git a/src/components/converter/Converter.js b/src/components/converter/Converter.js index 4f7bb1f7..4d69b96e 100644 --- a/src/components/converter/Converter.js +++ b/src/components/converter/Converter.js @@ -36,6 +36,13 @@ const LoadingContainer = styled.div` margin: 0 auto; ` +const LastUpdatedContainer = styled.div` + padding: 0 2.4rem 3.2rem; + @media (min-width: 1180px) { + padding: 0 4.8rem 3.2rem; + } +` + class Converter extends React.Component { static propTypes = { convertDisabledReason: PropTypes.string, @@ -95,9 +102,9 @@ class Converter extends React.Component { )} - + - + ) } diff --git a/src/components/converter/Stats.js b/src/components/converter/Stats.js index 623739bb..eced8f0d 100644 --- a/src/components/converter/Stats.js +++ b/src/components/converter/Stats.js @@ -19,10 +19,14 @@ const Container = styled.div` const Label = styled.div` line-height: 4rem; - font-size: 2.4rem; + font-size: 1.6rem; text-shadow: 0 1px 1px ${p => p.theme.colors.darkShade}; margin-right: 2em; white-space: nowrap; + + @media (min-width: 920px) { + font-size: 2.4rem; + } ` const Badge = styled.div` diff --git a/src/components/dashboard/tx-list/Filter.js b/src/components/dashboard/tx-list/Filter.js index f1a91204..e3423ce9 100644 --- a/src/components/dashboard/tx-list/Filter.js +++ b/src/components/dashboard/tx-list/Filter.js @@ -39,6 +39,7 @@ const Tab = styled.button` export default class Filter extends React.Component { static propTypes = { onFilterChange: PropTypes.func.isRequired, + isMultiChain: PropTypes.bool.isRequired, activeFilter: PropTypes.oneOf([ 'converted', 'received', @@ -82,12 +83,14 @@ export default class Filter extends React.Component { > Converted - {/* this.props.onFilterChange('ported')} - > - Ported - */} + {this.props.isMultiChain && ( + this.props.onFilterChange('ported')} + > + Ported + + )} ) } diff --git a/src/components/dashboard/tx-list/Header.js b/src/components/dashboard/tx-list/Header.js index a2c3a46b..9bf0f126 100644 --- a/src/components/dashboard/tx-list/Header.js +++ b/src/components/dashboard/tx-list/Header.js @@ -1,11 +1,19 @@ +import styled, { css } from 'styled-components' import PropTypes from 'prop-types' -import styled from 'styled-components' import React from 'react' import ScanIndicator from './ScanIndicator' import { Flex } from '../../common' import Filter from './Filter' +const responsiveHeader = width => css` + @media (min-width: ${width}) { + align-items: baseline; + display: flex; + top: 6.8rem; + } +` + const Container = styled.div` position: sticky; background: ${p => p.theme.colors.primary}; @@ -16,11 +24,7 @@ const Container = styled.div` margin: 0 -4.8rem; padding: 0 4.8rem; - @media (min-width: 1140px) { - top: 6.8rem; - display: flex; - align-items: baseline; - } + ${p => responsiveHeader(p.isMultiChain ? '1140px' : '1040px')} ` const Title = styled.div` @@ -46,14 +50,16 @@ export default class Header extends React.Component { onWalletRefresh: PropTypes.func.isRequired, onFilterChange: PropTypes.func.isRequired, activeFilter: PropTypes.string.isRequired, + isMultiChain: PropTypes.bool.isRequired, + onTitleClick: PropTypes.func.isRequired, syncStatus: PropTypes.oneOf(['up-to-date', 'syncing', 'failed']).isRequired } render() { return ( - + - Transactions + Transactions {(this.props.hasTransactions || this.props.syncStatus !== 'syncing') && ( diff --git a/src/components/dashboard/tx-list/TxList.js b/src/components/dashboard/tx-list/TxList.js index e17cb0c9..cf03618c 100644 --- a/src/components/dashboard/tx-list/TxList.js +++ b/src/components/dashboard/tx-list/TxList.js @@ -42,6 +42,7 @@ class TxList extends React.Component { static propTypes = { hasTransactions: PropTypes.bool.isRequired, onWalletRefresh: PropTypes.func.isRequired, + isMultiChain: PropTypes.bool.isRequired, syncStatus: PropTypes.oneOf(['up-to-date', 'syncing', 'failed']).isRequired, items: PropTypes.arrayOf( PropTypes.shape({ @@ -52,6 +53,7 @@ class TxList extends React.Component { } state = { + displayAttestations: false, activeModal: null, selectedTx: null, isReady: false @@ -91,7 +93,17 @@ class TxList extends React.Component { ) filterExtractValue = ({ txType }) => - ['imported', 'exported'].includes(txType) ? 'ported' : txType + ['import-requested', 'imported', 'exported'].includes(txType) + ? 'ported' + : txType + + handleClick = e => { + if (!window.isDev || !e.shiftKey || !e.altKey) return + this.setState(state => ({ + ...state, + displayAttestations: !state.displayAttestations + })) + } render() { if (!this.state.isReady) return null @@ -99,7 +111,9 @@ class TxList extends React.Component { + this.state.displayAttestations ? true : txType !== 'attestation' + )} > {({ filteredItems, onFilterChange, activeFilter }) => ( @@ -107,6 +121,8 @@ class TxList extends React.Component { onWalletRefresh={this.props.onWalletRefresh} hasTransactions={this.props.hasTransactions} onFilterChange={onFilterChange} + isMultiChain={this.props.isMultiChain} + onTitleClick={this.handleClick} activeFilter={activeFilter} syncStatus={this.props.syncStatus} /> diff --git a/src/components/dashboard/tx-list/row/Amount.js b/src/components/dashboard/tx-list/row/Amount.js index ce8343d9..6c9e2d9f 100644 --- a/src/components/dashboard/tx-list/row/Amount.js +++ b/src/components/dashboard/tx-list/row/Amount.js @@ -35,11 +35,14 @@ const Container = styled.div` export default class Amount extends React.Component { static propTypes = { + isAttestationValid: PropTypes.bool, isProcessing: PropTypes.bool, isPending: PropTypes.bool, isFailed: PropTypes.bool.isRequired, symbol: PropTypes.string, txType: PropTypes.oneOf([ + 'import-requested', + 'attestation', 'converted', 'imported', 'exported', @@ -51,6 +54,7 @@ export default class Amount extends React.Component { value: PropTypes.string.isRequired } + // eslint-disable-next-line complexity render() { return ( ) : this.props.txType === 'converted' ? ( + ) : this.props.txType === 'attestation' && + this.props.isAttestationValid ? ( + Attestation Valid + ) : this.props.txType === 'attestation' && + !this.props.isAttestationValid ? ( + Attestation Invalid ) : this.props.txType === 'unknown' || this.props.isProcessing ? ( New transaction ) : ( + A validator {this.props.isAttestationValid ? 'attested' : 'refuted'} an + import + + ) + } +} diff --git a/src/components/dashboard/tx-list/row/Details.js b/src/components/dashboard/tx-list/row/Details.js index 7b1c3f3b..a795b416 100644 --- a/src/components/dashboard/tx-list/row/Details.js +++ b/src/components/dashboard/tx-list/row/Details.js @@ -2,6 +2,8 @@ import PropTypes from 'prop-types' import styled from 'styled-components' import React from 'react' +import ImportRequestedDetails from './ImportRequestedDetails' +import AttestationDetails from './AttestationDetails' import ConvertedDetails from './ConvertedDetails' import ImportedDetails from './ImportedDetails' import ExportedDetails from './ExportedDetails' @@ -34,6 +36,8 @@ export default class Details extends React.Component { isPending: PropTypes.bool, isFailed: PropTypes.bool.isRequired, txType: PropTypes.oneOf([ + 'import-requested', + 'attestation', 'converted', 'received', 'imported', @@ -57,10 +61,14 @@ export default class Details extends React.Component { ) : this.props.txType === 'converted' ? ( + ) : this.props.txType === 'import-requested' ? ( + ) : this.props.txType === 'imported' ? ( ) : this.props.txType === 'exported' ? ( + ) : this.props.txType === 'attestation' ? ( + ) : ( Waiting for metadata )} diff --git a/src/components/dashboard/tx-list/row/Icon.js b/src/components/dashboard/tx-list/row/Icon.js index fc37786f..30323225 100644 --- a/src/components/dashboard/tx-list/row/Icon.js +++ b/src/components/dashboard/tx-list/row/Icon.js @@ -26,6 +26,8 @@ export default class Icon extends React.Component { isPending: PropTypes.bool.isRequired, isFailed: PropTypes.bool.isRequired, txType: PropTypes.oneOf([ + 'import-requested', + 'attestation', 'converted', 'received', 'imported', @@ -50,6 +52,7 @@ export default class Icon extends React.Component { return case 'auction': return + case 'import-requested': case 'imported': return case 'exported': diff --git a/src/components/dashboard/tx-list/row/ImportRequestedDetails.js b/src/components/dashboard/tx-list/row/ImportRequestedDetails.js new file mode 100644 index 00000000..65f30953 --- /dev/null +++ b/src/components/dashboard/tx-list/row/ImportRequestedDetails.js @@ -0,0 +1,30 @@ +import PropTypes from 'prop-types' +import styled from 'styled-components' +import React from 'react' + +const Chain = styled.span` + line-height: 1.6rem; + font-size: 1.3rem; + font-weight: 600; +` + +export default class ImportRequestedDetails extends React.Component { + static propTypes = { + importedFrom: PropTypes.string, + isPending: PropTypes.bool.isRequired + } + + render() { + return this.props.isPending ? ( + + Pending import request from {this.props.importedFrom}{' '} + blockchain + + ) : ( + + Import from {this.props.importedFrom} blockchain + requested + + ) + } +} diff --git a/src/components/onboarding/PasswordStep.js b/src/components/onboarding/PasswordStep.js index 7452d63b..d921c2ad 100644 --- a/src/components/onboarding/PasswordStep.js +++ b/src/components/onboarding/PasswordStep.js @@ -3,8 +3,7 @@ import PropTypes from 'prop-types' import styled from 'styled-components' import React from 'react' -import { TextInput, AltLayout, Btn, Sp } from '../common' -import EntropyMeter from './EntropyMeter' +import { EntropyMeter, TextInput, AltLayout, Btn, Sp } from '../common' import Message from './Message' const PasswordMessage = styled(Message)` diff --git a/src/components/port/FailedImports.js b/src/components/port/FailedImports.js index 65a30eb4..8f9afccb 100644 --- a/src/components/port/FailedImports.js +++ b/src/components/port/FailedImports.js @@ -2,7 +2,8 @@ import PropTypes from 'prop-types' import styled from 'styled-components' import React from 'react' -import { DisplayValue, Flex, Btn } from '../common' +import { DisplayValue, Flex } from '../common' +import RetryBtn from './RetryBtn' const List = styled.ul` list-style-type: none; @@ -48,60 +49,47 @@ const Details = styled.div` } ` -const RetryBtn = styled(Btn)` - margin-left: 2.4rem; - background-color: rgba(126, 97, 248, 0.4); - background-image: none; - color: ${({ theme }) => theme.colors.light}; - font-size: 1.3rem; - letter-spacing: 0.4px; - min-width: 108px; - padding-top: 0.7rem; - padding-bottom: 0.7rem; - box-shadow: none; - - &:hover, - &:focus { - opacity: 0.8; - } -` - export default class FailedImports extends React.Component { static propTypes = { + retryDisabledReason: PropTypes.string, + retryDisabled: PropTypes.bool.isRequired, + onRetryClick: PropTypes.func.isRequired, items: PropTypes.arrayOf( PropTypes.shape({ + currentBurnHash: PropTypes.string.isRequired, originChain: PropTypes.string.isRequired, - receipt: PropTypes.shape({}), - meta: PropTypes.shape({ - currentBurnHash: PropTypes.string.isRequired, - value: PropTypes.string.isRequired - }) + value: PropTypes.string.isRequired, + from: PropTypes.string.isRequired }) - ).isRequired, - onRetry: PropTypes.func.isRequired + ).isRequired } - handleRetryClick = e => this.props.onRetry(e.target.dataset.hash) + handleRetryClick = e => this.props.onRetryClick(e.target.dataset.hash) render() { return ( {this.props.items.map(item => ( - + FAILED - + EXPORTED FROM {item.originChain} Retry diff --git a/src/components/port/OngoingImports.js b/src/components/port/OngoingImports.js new file mode 100644 index 00000000..a3761920 --- /dev/null +++ b/src/components/port/OngoingImports.js @@ -0,0 +1,139 @@ +import PropTypes from 'prop-types' +import styled from 'styled-components' +import React from 'react' + +import { DisplayValue, Flex } from '../common' +import RetryBtn from './RetryBtn' + +const List = styled.ul` + list-style-type: none; + padding: 0; + margin-left: 0; + margin-right: 0; + margin-top: 2.4rem; + margin-bottom: 4.8rem; +` + +const Item = styled.li` + background-color: ${({ theme }) => theme.colors.lightShade}; + border-radius: 2px; + padding: 1.2rem 2.4rem 1.2rem 1.6rem; + + & + & { + margin-top: 1.6rem; + } +` + +const LeftLabel = styled.div` + font-size: 1.1rem; + letter-spacing: 0.4px; + color: #c2c4c6; + flex-grow: 1; +` + +const Hiddable = styled.span` + display: none; + + @media (min-width: 1000px) { + display: inline; + } +` + +const Validations = styled.span` + background-color: ${({ theme }) => theme.colors.darkShade}; + color: ${({ theme }) => theme.colors.light}; + padding: 0.5rem 1.2rem; + border-radius: 1.2rem; + margin-right: 1.6rem; +` + +const Refutations = styled.span` + color: ${({ theme }) => theme.colors.warning}; + padding: 0.5rem 1.2rem; + margin-right: 1.6rem; +` + +const Amount = styled.div` + color: ${({ theme }) => theme.colors.primary}; + font-size: 2rem; + font-weight: 600; +` + +const Details = styled.div` + font-size: 1.1rem; + letter-spacing: 0.4px; + color: #c2c4c6; + + & > span { + color: ${({ theme }) => theme.colors.light}; + font-size: 1.3rem; + font-weight: 600; + text-transform: uppercase; + } +` + +export default class OngoingImports extends React.Component { + static propTypes = { + attestationThreshold: PropTypes.number.isRequired, + retryDisabledReason: PropTypes.string, + retryDisabled: PropTypes.bool.isRequired, + onRetryClick: PropTypes.func.isRequired, + items: PropTypes.arrayOf( + PropTypes.shape({ + attestedCount: PropTypes.number.isRequired, + refutedCount: PropTypes.number.isRequired, + importedFrom: PropTypes.string.isRequired, + value: PropTypes.string.isRequired, + hash: PropTypes.string.isRequired + }) + ).isRequired + } + + handleRetryClick = e => this.props.onRetryClick(e.target.dataset.hash) + + render() { + return ( + + {this.props.items.map(item => ( + + + + + {item.attestedCount} / {this.props.attestationThreshold} + {' '} + VALIDATIONS{' '} + {item.refutedCount > 0 && ( + + {item.refutedCount}{' '} + + {item.refutedCount > 1 ? 'REFUTATIONS' : 'REFUTATION'} + + + )} + + + + + + + IMPORTING FROM {item.importedFrom} BLOCKCHAIN + + + + Retry + + + + ))} + + ) + } +} diff --git a/src/components/port/Port.js b/src/components/port/Port.js index 6934986c..f9156ebe 100644 --- a/src/components/port/Port.js +++ b/src/components/port/Port.js @@ -1,17 +1,27 @@ +import { toChecksumAddress } from 'web3-utils' import withPortState from 'metronome-wallet-ui-logic/src/hocs/withPortState' import PropTypes from 'prop-types' import styled from 'styled-components' import React from 'react' -import { DarkLayout, DisplayValue, Flex, Btn } from '../common' +import { DarkLayout, Flex, Btn } from '../common' +import RetryImportDrawer from './RetryImportDrawer' +import OngoingImports from './OngoingImports' import FailedImports from './FailedImports' import PortDrawer from './PortDrawer' +import PortIcon from '../icons/PortIcon' const Container = styled.div` display: flex; padding: 3.2rem 4.8rem; - align-items: flex-start; - flex-direction: row; + align-items: stretch; + flex-direction: column; + justify-content: center; + + @media (min-width: 1000px) { + align-items: flex-start; + flex-direction: row; + } ` const Title = styled.h2` @@ -26,97 +36,83 @@ const Description = styled.p` color: #c2c4c6; margin-top: 0.8rem; margin-bottom: 0; -` - -const List = styled.ul` - list-style-type: none; - padding: 0; - margin-left: 0; - margin-right: 0; - margin-top: 2.4rem; - margin-bottom: 4.8rem; -` -const Item = styled.li` - background-color: ${({ theme }) => theme.colors.lightShade}; - border-radius: 2px; - padding: 1.2rem 2.4rem 1.2rem 1.6rem; - - & + & { - margin-top: 1.6rem; + & > span { + color: ${({ theme }) => theme.colors.light}; + font-size: 1.3rem; + font-weight: 600; } ` -const LeftLabel = styled.div` - font-size: 1.4rem; - letter-spacing: 0.4px; - color: #c2c4c6; -` - -const Hiddable = styled.span` - display: none; +const BtnContainer = styled.div` + margin-bottom: 3.2rem; + order: -1; + align-self: center; + text-align: center; @media (min-width: 1000px) { - display: inline; + margin-top: 7.2rem; + margin-left: 2.4rem; + margin-bottom: 0; + order: 0; + align-self: flex-start; } ` -const Validations = styled.span` - background-color: ${({ theme }) => theme.colors.darkShade}; - color: ${({ theme }) => theme.colors.light}; - padding: 0.5rem 1.2rem; - border-radius: 1.2rem; - margin-right: 2.4rem; - font-size: 1.1rem; -` - -const Amount = styled.div` - color: ${({ theme }) => theme.colors.primary}; - font-size: 2rem; - font-weight: 600; +const PortBtn = styled(Btn)` + min-width: 200px; ` +const NoPortsContainer = styled.div` + margin-top: 3.2rem; + max-width: 32rem; + display: flex; + flex-direction: column; + align-items: center; -const Details = styled.div` - font-size: 1.1rem; - letter-spacing: 0.4px; - color: #c2c4c6; - - & > span { - color: ${({ theme }) => theme.colors.light}; - font-size: 1.3rem; - font-weight: 600; - text-transform: uppercase; + @media (min-width: 1000px) { + margin-top: -5rem; } ` -const BtnContainer = styled.div` - margin-top: 5rem; - margin-left: 2.4rem; +const NoPortsTitle = styled.div` + margin-top: 3.4rem; + font-weight: 600; + font-size: 2.4rem; + line-height: 3.2rem; + text-align: center; + opacity: 0.75; ` -const PortBtn = styled(Btn)` - min-width: 200px; +const NoPortsMessage = styled.div` + margin-top: 0.8rem; + margin-bottom: 3.2rem; + font-size: 1.6rem; + line-height: 2.4rem; + text-align: center; ` class Port extends React.Component { static propTypes = { + attestationThreshold: PropTypes.number.isRequired, + retryDisabledReason: PropTypes.string, portDisabledReason: PropTypes.string, - pendingImports: PropTypes.arrayOf( + shouldRenderForm: PropTypes.bool.isRequired, + ongoingImports: PropTypes.arrayOf( PropTypes.shape({ - destinationChain: PropTypes.string.isRequired, - totalValidators: PropTypes.number.isRequired, - validations: PropTypes.number.isRequired, - originChain: PropTypes.string.isRequired, - amount: PropTypes.string.isRequired, + attestedCount: PropTypes.number.isRequired, + refutedCount: PropTypes.number.isRequired, + importedFrom: PropTypes.string.isRequired, + value: PropTypes.string.isRequired, hash: PropTypes.string.isRequired }) ).isRequired, failedImports: PropTypes.array.isRequired, - portDisabled: PropTypes.bool.isRequired, - onRetry: PropTypes.func.isRequired + retryDisabled: PropTypes.bool.isRequired, + portDisabled: PropTypes.bool.isRequired } state = { + retryCandidate: null, activeModal: null } @@ -124,51 +120,80 @@ class Port extends React.Component { onCloseModal = () => this.setState({ activeModal: null }) + onRetryClick = hash => { + const retryCandidate = this.props.failedImports + .concat(this.props.ongoingImports) + .find(({ currentBurnHash }) => currentBurnHash === hash) + this.setState({ + activeModal: 'retry-import', + retryCandidate: { + ...retryCandidate, + from: toChecksumAddress(retryCandidate.from) + } + }) + } + + // eslint-disable-next-line complexity render() { return ( - - Pending Imports - - {this.props.pendingImports.map(item => ( - - - - - {item.validations}/{item.totalValidators} - {' '} - VALIDATIONS - - - - - - - IMPORTING FROM {item.originChain} to{' '} - {item.destinationChain} - - - - - ))} - - {this.props.failedImports.length > 0 && ( - - Failed Imports - - Resubmit incomplete imports that failed to excecute by - clicking Retry. - - - - )} - - + {(this.props.failedImports.length > 0 || + this.props.ongoingImports.length > 0) && ( + + {this.props.failedImports.length > 0 && ( + + Failed Ports + + Resubmit incomplete ports that failed to execute by clicking + Retry. + + + + )} + + {this.props.ongoingImports.length > 0 && ( + + Ongoing Ports + + An Import Request requires at least{' '} + + {this.props.attestationThreshold}{' '} + {this.props.attestationThreshold > 1 + ? 'validations' + : 'validation'} + {' '} + for the MET to be imported on this chain. + + + + )} + + )} + {this.props.failedImports.length === 0 && + this.props.ongoingImports.length === 0 && ( + + + You have no pending ports + + Port your Metronome between any of the other supported + chains. + + + )} + + + {this.props.shouldRenderForm && ( - + )} + + {this.props.shouldRenderForm && ( + + )} ) } diff --git a/src/components/port/PortDrawer.js b/src/components/port/PortDrawer.js index 6f0fd503..6471efc1 100644 --- a/src/components/port/PortDrawer.js +++ b/src/components/port/PortDrawer.js @@ -3,6 +3,8 @@ import PropTypes from 'prop-types' import styled from 'styled-components' import React from 'react' +import ReadOnlyField from './ReadOnlyField' +import FeeEstimates from './FeeEstimates' import { ConfirmationWizard, DisplayValue, @@ -11,32 +13,9 @@ import { FieldBtn, Selector, Drawer, - Label, - Flex, Btn, Sp } from '../common' -import FeeEstimates from './FeeEstimates' - -const SourceField = styled(Flex.Row)` - background-color: ${({ theme }) => theme.colors.lightShade}; - padding: 2rem 1.6rem; - margin-top: 0.8rem; -` - -const ChainName = styled.div` - color: ${({ theme }) => theme.colors.light}; - font-size: 1.3rem; - letter-spacing: 0.5px; - font-weight: 600; -` - -const Balance = styled.div` - color: ${({ theme }) => theme.colors.primary}; - font-size: 1.3rem; - letter-spacing: 0.5px; - font-weight: 600; -` const ConfirmationContainer = styled.div` font-size: 1.3rem; @@ -110,13 +89,12 @@ class PortDrawer extends React.Component { renderForm = goToReview => ( - Source - - {this.props.sourceDisplayName} - - - - + } + value={this.props.sourceDisplayName} + label="Source" + id="source-field" + /> theme.colors.lightShade}; + padding: 2rem 1.6rem; + margin-top: 0.8rem; + min-height: 5.6rem; +` + +const Value = styled.div` + color: ${({ theme }) => theme.colors.light}; + font-size: 1.3rem; + letter-spacing: 0.5px; + font-weight: 600; +` + +const Suffix = styled.div` + color: ${({ theme }) => theme.colors.primary}; + font-size: 1.3rem; + letter-spacing: 0.5px; + font-weight: 600; +` + +export default class ReadOnlyField extends React.Component { + static propTypes = { + suffix: PropTypes.node, + label: PropTypes.string.isRequired, + value: PropTypes.node.isRequired, + id: PropTypes.string.isRequired + } + + render() { + return ( + + {this.props.label} + + {this.props.value} + {this.props.suffix && {this.props.suffix}} + + + ) + } +} diff --git a/src/components/port/RetryBtn.js b/src/components/port/RetryBtn.js new file mode 100644 index 00000000..daf0223b --- /dev/null +++ b/src/components/port/RetryBtn.js @@ -0,0 +1,23 @@ +import styled from 'styled-components' + +import { Btn } from '../common' + +const RetryBtn = styled(Btn)` + margin-left: 2.4rem; + background-color: rgba(126, 97, 248, 0.4); + background-image: none; + color: ${({ theme }) => theme.colors.light}; + font-size: 1.3rem; + letter-spacing: 0.4px; + min-width: 108px; + padding-top: 0.7rem; + padding-bottom: 0.7rem; + box-shadow: none; + + &:hover, + &:focus { + opacity: 0.8; + } +` + +export default RetryBtn diff --git a/src/components/port/RetryImportDrawer.js b/src/components/port/RetryImportDrawer.js new file mode 100644 index 00000000..3b5fdaa0 --- /dev/null +++ b/src/components/port/RetryImportDrawer.js @@ -0,0 +1,157 @@ +import withRetryImportFormState from 'metronome-wallet-ui-logic/src/hocs/withRetryImportFormState' +import PropTypes from 'prop-types' +import TimeAgo from 'metronome-wallet-ui-logic/src/components/TimeAgo' +import styled from 'styled-components' +import React from 'react' + +import ReadOnlyField from './ReadOnlyField' +import { + ConfirmationWizard, + DisplayValue, + GasEditor, + Drawer, + Flex, + Btn, + Sp +} from '../common' + +const Message = styled.div` + font-size: 1.3rem; + color: rgba(255, 255, 255, 0.5); + padding-bottom: 2.4rem; + + & span { + color: ${p => p.theme.colors.light}; + } +` + +const ConfirmationContainer = styled.div` + font-size: 1.3rem; + font-weight: 600; + letter-spacing: 0.5px; + line-height: 1.5; + + & > span, + & > div { + color: ${p => p.theme.colors.primary}; + } +` + +const BtnContainer = styled.div` + background-image: linear-gradient(to bottom, #272727, #323232); + padding: 3.2rem 2.4rem; +` + +class RetryImportDrawer extends React.Component { + static propTypes = { + destinationDisplayName: PropTypes.string.isRequired, + originDisplayName: PropTypes.string.isRequired, + gasEstimateError: PropTypes.bool, + onRequestClose: PropTypes.func.isRequired, + formattedTime: PropTypes.string.isRequired, + onInputChange: PropTypes.func.isRequired, + useCustomGas: PropTypes.bool.isRequired, + timestamp: PropTypes.number.isRequired, + resetForm: PropTypes.func.isRequired, + onSubmit: PropTypes.func.isRequired, + validate: PropTypes.func.isRequired, + gasPrice: PropTypes.string, + gasLimit: PropTypes.string, + errors: PropTypes.object.isRequired, + isOpen: PropTypes.bool.isRequired, + value: PropTypes.string.isRequired, + fee: PropTypes.string.isRequired + } + + componentDidUpdate(prevProps) { + if (this.props.isOpen && prevProps.isOpen !== this.props.isOpen) { + this.props.resetForm() + } + } + + renderConfirmation = () => ( + + + You will request an import of{' '} + from the{' '} + {this.props.originDisplayName} blockchain to the{' '} + {this.props.destinationDisplayName} blockchain. + + + ) + + renderForm = goToReview => ( + + + + This Port operation was initiated{' '} + + + + . + + + + + + } + label="Amount (MET)" + id="value" + /> + + + + } + label="Fee (MET)" + id="fee" + /> + + + + + + + + + + Retry Import + + + + ) + + render() { + return ( + + + + ) + } +} + +export default withRetryImportFormState(RetryImportDrawer) diff --git a/src/components/sidebar/PrimaryNav.js b/src/components/sidebar/PrimaryNav.js index ae8c3f97..67c9f972 100644 --- a/src/components/sidebar/PrimaryNav.js +++ b/src/components/sidebar/PrimaryNav.js @@ -3,11 +3,11 @@ import PropTypes from 'prop-types' import styled from 'styled-components' import React from 'react' -// import FailedImportsBadge from './FailedImportsBadge' +import FailedImportsBadge from './FailedImportsBadge' import ConverterIcon from '../icons/ConverterIcon' import AuctionIcon from '../icons/AuctionIcon' import WalletIcon from '../icons/WalletIcon' -// import PortIcon from '../icons/PortIcon' +import PortIcon from '../icons/PortIcon' const Button = styled(NavLink)` display: flex; @@ -77,6 +77,7 @@ const Label = styled.span` export default class PrimaryNav extends React.Component { static propTypes = { + isMultiChain: PropTypes.bool.isRequired, parent: PropTypes.object.isRequired } @@ -113,14 +114,19 @@ export default class PrimaryNav extends React.Component { Converter - - {/* - - - - Port - - */} + {this.props.isMultiChain && ( + + + + + Port + + + )} ) } diff --git a/src/components/sidebar/Sidebar.js b/src/components/sidebar/Sidebar.js index f15e0b0a..3ae57316 100644 --- a/src/components/sidebar/Sidebar.js +++ b/src/components/sidebar/Sidebar.js @@ -1,7 +1,8 @@ +import PropTypes from 'prop-types' import styled from 'styled-components' import React from 'react' -// import ChainSelector from './ChainSelector' +import ChainSelector from './ChainSelector' import SecondaryNav from './SecondaryNav' import PrimaryNav from './PrimaryNav' import LogoIcon from '../icons/LogoIcon' @@ -34,9 +35,9 @@ const Container = styled.div` ` const LogoLargeContainer = styled.div` - padding: 3.2rem 3.2rem 5.6rem; // remove this line when reinserting ChainSelector - height: 125px; // remove this line when reinserting ChainSelector - // padding: 2.4rem 2.4rem 2.8rem 2.4rem; // add this line when reinserting ChainSelector + padding: ${p => + p.isMultiChain ? '2.4rem 2.4rem 2.8rem 2.4rem' : '3.2rem 3.2rem 5.6rem'}; + height: ${p => (p.isMultiChain ? 'auto' : '125px')}; display: none; flex-shrink: 0; @@ -46,9 +47,8 @@ const LogoLargeContainer = styled.div` ` const LogoSmallContainer = styled.div` - padding: 2.3rem 1.6rem; // remove this line when reinserting ChainSelector - height: 125px; // remove this line when reinserting ChainSelector - // padding: 2.3rem 1.6rem 3.2rem; // add this line when reinserting ChainSelector + padding: ${p => (p.isMultiChain ? '2.3rem 1.6rem 3.2rem' : '2.3rem 1.6rem')}; + height: ${p => (p.isMultiChain ? 'auto' : '125px')}; display: block; flex-shrink: 0; @@ -57,17 +57,17 @@ const LogoSmallContainer = styled.div` } ` -// const ChainSelectorContainer = styled.div` -// margin: 0 0.8rem 2.4rem; +const ChainSelectorContainer = styled.div` + margin: 0 0.8rem 2.4rem; -// @media (min-width: 800px) { -// margin: 0 1.6rem 2.4rem; -// } -// ` + @media (min-width: 800px) { + margin: 0 1.6rem 2.4rem; + } +` const PrimaryNavContainer = styled.nav` flex-grow: 1; - margin-top: 5rem; // remove this line when reinserting ChainSelector + margin-top: ${p => (p.isMultiChain ? 0 : '5rem')}; ` const SecondaryNavContainer = styled.div` @@ -92,23 +92,32 @@ const Footer = styled.div` ` export default class Sidebar extends React.Component { + static propTypes = { + isMultiChain: PropTypes.bool.isRequired + } + render() { return ( - + - + - {/* - - */} - - - + {this.props.isMultiChain && ( + + + + )} + + + diff --git a/src/components/tools/Tools.js b/src/components/tools/Tools.js index 2ab41957..1985f1e9 100644 --- a/src/components/tools/Tools.js +++ b/src/components/tools/Tools.js @@ -1,5 +1,5 @@ +import { withRouter, NavLink } from 'react-router-dom' import withToolsState from 'metronome-wallet-ui-logic/src/hocs/withToolsState' -import { withRouter } from 'react-router-dom' import PropTypes from 'prop-types' import styled from 'styled-components' import React from 'react' @@ -101,6 +101,17 @@ class Tools extends React.Component { + + + Change Password + + This will allow you to change the password you use to access the + wallet. + + + Change Password + + Rescan Transactions List diff --git a/src/components/tools/WalletStatus.js b/src/components/tools/WalletStatus.js index a86684f4..cafdefc4 100644 --- a/src/components/tools/WalletStatus.js +++ b/src/components/tools/WalletStatus.js @@ -37,21 +37,21 @@ function WalletStatus(props) { return ( Version {props.appVersion} - - Connected to {props.chainName} chain - - ( - - Best Block {props.height} - - mined {timeAgo} - - - )} - /> - + + Connected to {props.chainName} chain + + ( + + Best Block {props.height} + + mined {timeAgo} + + + )} + /> +
+ This will allow you to change the password you use to access the + wallet. +