From e970b6b3eb7129c7be1407ed1e15906399adf394 Mon Sep 17 00:00:00 2001 From: goosewobbler Date: Mon, 27 Jun 2022 15:53:08 +0100 Subject: [PATCH 01/16] add prettier, husky, lint-staged --- package.json | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 7ba2d1b4a..f7dc42cc3 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "System-wide web3", "main": "compiled/main", "scripts": { + "prepare": "husky install", "clean": "npx rimraf dist bundle compiled .cache node_modules", "setup:full": "npm run clean && npm cache clean --force && npm install --cache /tmp/empty-cache --ignore-scripts && allow-scripts && npm audit fix", "setup:clean": "npm run clean && npm run setup", @@ -33,6 +34,8 @@ "launch:dev:worker": "cross-env NODE_ENV=development LOG_WORKER=true electron ./compiled/main", "launch:dev:rinkeby": "cross-env NODE_ENV=development RINKEBY=true electron ./compiled/main", "launch:inspect": "cross-env NODE_ENV=production LOG_LEVEL=verbose electron --inspect ./compiled/main", + "format": "prettier --write \"**/*.{j,t}s\"", + "format:check": "prettier --check \"**/*.{j,t}s\"", "prod": "npm run compile && npm run bundle && npm run launch", "hot": "npm run compile && npm run bundle && npm run launch:hot", "watch:compile": "shx mkdir -p ./compiled/main/windows && npm run copy-assets && tsc -w", @@ -49,7 +52,6 @@ "test:unit:components": "npm run test:exec -- --env=jsdom --testTimeout=500 ./test/app", "test:e2e": "npm run test:exec -- --env=node ./test/e2e", "test:usbAdapters": "ELECTRON_RUN_AS_NODE=true ./node_modules/.bin/electron ./node_modules/jest/bin/jest.js ./test/main/signers/ledger/adapter.test.js --testPathIgnorePatterns=''", - "standard": "standardx --fix --verbose", "local:rpc": "ganache-cli --account=\"0x2d6945dbddb8dcf5492004e6f720f8e971196ff61a61c4be99714ebc71e06c00, 5000000000000000000000\" --account=\"0xaef6a68a47c1628081e4e6df195f5f712ae4eb7da332a6d74dca06ae32a3e7ae,5000\"" }, "author": { @@ -141,6 +143,7 @@ "electron-builder": "23.0.3", "electron-notarize": "1.2.1", "hardhat": "2.9.9", + "husky": "^8.0.1", "jest": "28.1.1", "jest-environment-jsdom": "28.1.1", "node-abi": "3.22.0", @@ -148,26 +151,18 @@ "node-watch": "0.7.3", "parcel-bundler": "1.12.3", "prebuild-install": "7.1.1", + "prettier": "^2.7.1", "rimraf": "3.0.2", "shx": "0.3.4", - "standardx": "7.0.0", "stylus": "0.58.1", "ts-jest": "28.0.5", "typescript": "4.7.3" }, - "standardx": { - "parser": "babel-eslint", - "env": [ - "jest" + "lint-staged": { + "**/*.{yml,json,md,ts,js}": [ + "prettier --write" ] }, - "eslintConfig": { - "rules": { - "multiline-ternary": 0, - "react/no-direct-mutation-state": 0, - "react/no-find-dom-node": 0 - } - }, "browserslist": [ "last 1 Electron major version" ], From 74367cadf40a8552bb73390f757f9633f2a813eb Mon Sep 17 00:00:00 2001 From: goosewobbler Date: Mon, 27 Jun 2022 15:53:19 +0100 Subject: [PATCH 02/16] update ur lock --- package-lock.json | 2171 ++++++++++++++++++++------------------------- 1 file changed, 946 insertions(+), 1225 deletions(-) diff --git a/package-lock.json b/package-lock.json index 541c08efd..524aaba9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,16 +92,18 @@ "electron-builder": "23.0.3", "electron-notarize": "1.2.1", "hardhat": "2.9.9", + "husky": "^8.0.1", "jest": "28.1.1", "jest-environment-jsdom": "28.1.1", + "lint-staged": "^13.0.3", "node-abi": "3.22.0", "node-gyp": "9.0.0", "node-watch": "0.7.3", "parcel-bundler": "1.12.3", "prebuild-install": "7.1.1", + "prettier": "^2.7.1", "rimraf": "3.0.2", "shx": "0.3.4", - "standardx": "7.0.0", "stylus": "0.58.1", "ts-jest": "28.0.5", "typescript": "4.7.3" @@ -2934,6 +2936,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -2954,6 +2957,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2969,6 +2973,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "peer": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -2977,6 +2982,7 @@ "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "peer": true, "dependencies": { "type-fest": "^0.8.1" }, @@ -2991,6 +2997,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "peer": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3002,17 +3009,20 @@ "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "peer": true }, "node_modules/@eslint/eslintrc/node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "peer": true }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "peer": true, "engines": { "node": ">=8" } @@ -6792,12 +6802,6 @@ "@types/tough-cookie": "*" } }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, "node_modules/@types/level-errors": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz", @@ -7370,6 +7374,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -7746,25 +7751,6 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, - "node_modules/array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -7774,42 +7760,6 @@ "node": ">=0.10.0" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array.prototype.reduce": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", @@ -10063,7 +10013,6 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, - "optional": true, "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -10218,6 +10167,12 @@ "color-support": "bin.js" } }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, "node_modules/colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", @@ -11904,6 +11859,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -12044,6 +12000,12 @@ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -12665,15 +12627,6 @@ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", "dev": true }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -12837,6 +12790,7 @@ "version": "7.18.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz", "integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==", + "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0", "@eslint/eslintrc": "^0.3.0", @@ -12886,290 +12840,11 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peerDependencies": { - "eslint": "^7.12.1", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1 || ^5.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-10.0.0.tgz", - "integrity": "sha512-hLeA2f5e06W1xyr/93/QJulN/rLbUVUmqTlexv9PRKHFwEC9ffJcH2LvJhMoEqYQBEYafedgGZXH2W8NUpt5lA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peerDependencies": { - "eslint": "^7.12.1", - "eslint-plugin-react": "^7.21.5" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", - "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/eslint-plugin-import/node_modules/pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg==", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", - "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", - "dev": true, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.3.tgz", - "integrity": "sha512-ZMbFvZ1WAYSZKY662MBVEWR45VaBT6KSJCiupjrNlcdakB90juaZeDCbJq19e73JZQubqFtgETohwgAt8u5P6w==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.3", - "array.prototype.flatmap": "^1.2.4", - "doctrine": "^2.1.0", - "estraverse": "^5.2.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.4", - "object.fromentries": "^2.0.4", - "object.hasown": "^1.0.0", - "object.values": "^1.1.4", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "string.prototype.matchall": "^4.0.5" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -13182,6 +12857,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "peer": true, "engines": { "node": ">=4.0" } @@ -13190,6 +12866,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "peer": true, "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -13212,6 +12889,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -13227,6 +12905,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -13241,6 +12920,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "peer": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -13249,6 +12929,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13264,6 +12945,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -13274,12 +12956,14 @@ "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "peer": true, "engines": { "node": ">=10" } @@ -13288,6 +12972,7 @@ "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "peer": true, "dependencies": { "type-fest": "^0.8.1" }, @@ -13302,6 +12987,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, "engines": { "node": ">=8" } @@ -13310,6 +12996,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "peer": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -13321,17 +13008,20 @@ "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "peer": true }, "node_modules/eslint/node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "peer": true }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -13343,6 +13033,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "peer": true, "engines": { "node": ">=8" } @@ -13351,6 +13042,7 @@ "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "peer": true, "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -13364,6 +13056,7 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -13387,6 +13080,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "peer": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -13398,6 +13092,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "peer": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -15017,6 +14712,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -15201,6 +14897,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "peer": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -15212,7 +14909,8 @@ "node_modules/flatted": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "peer": true }, "node_modules/follow-redirects": { "version": "1.5.10", @@ -25573,18 +25271,6 @@ "node": ">=4" } }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -26960,6 +26646,21 @@ "ms": "^2.0.0" } }, + "node_modules/husky": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", + "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/iconv-corefoundation": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", @@ -27039,6 +26740,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "peer": true, "engines": { "node": ">= 4" } @@ -27058,6 +26760,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -30650,7 +30353,8 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "peer": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -30727,19 +30431,6 @@ "extsprintf": "^1.2.0" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz", - "integrity": "sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "object.assign": "^4.1.2" - }, - "engines": { - "node": ">=4.0" - } - }, "node_modules/keccak": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", @@ -31053,6 +30744,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -31074,12 +30766,324 @@ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, + "node_modules/lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/lint-staged": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.3.tgz", + "integrity": "sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==", + "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.17", + "commander": "^9.3.0", + "debug": "^4.3.4", + "execa": "^6.1.0", + "lilconfig": "2.0.5", + "listr2": "^4.0.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.2", + "pidtree": "^0.6.0", + "string-argv": "^0.3.1", + "yaml": "^2.1.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/lint-staged/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/lint-staged/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -31195,7 +31199,8 @@ "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "peer": true }, "node_modules/lodash.uniq": { "version": "4.5.0", @@ -31289,6 +31294,113 @@ "node": ">=8" } }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -34143,37 +34255,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.getownpropertydescriptors": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", @@ -34192,19 +34273,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.hasown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", - "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -34340,6 +34408,7 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "peer": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -35153,6 +35222,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -35535,6 +35605,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -35571,136 +35653,6 @@ "node": ">= 6" } }, - "node_modules/pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/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, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/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, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-conf/node_modules/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, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -36652,6 +36604,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "peer": true, "engines": { "node": ">= 0.8.0" } @@ -36665,11 +36618,10 @@ } }, "node_modules/prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.0.tgz", - "integrity": "sha512-nwoX4GMFgxoPC6diHvSwmK/4yU8FFH3V8XWtLQrbj4IBsK2pkYhG4kf/ljF/haaZ/aii+wNJqISrCDPgxGWDVQ==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true, - "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -37443,6 +37395,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "peer": true, "engines": { "node": ">=8" }, @@ -37763,6 +37716,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "peer": true, "engines": { "node": ">=4" } @@ -37848,6 +37802,12 @@ "node": ">= 4" } }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, "node_modules/rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", @@ -38554,7 +38514,6 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, - "optional": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -38569,7 +38528,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -38585,7 +38543,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "optional": true, "dependencies": { "color-name": "~1.1.4" }, @@ -38597,8 +38554,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true + "dev": true }, "node_modules/smart-buffer": { "version": "4.2.0", @@ -39078,98 +39034,6 @@ "node": ">=8" } }, - "node_modules/standard": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/standard/-/standard-16.0.4.tgz", - "integrity": "sha512-2AGI874RNClW4xUdM+bg1LRXVlYLzTNEkHmTG5mhyn45OhbgwA+6znowkOGYy+WMb5HRyELvtNy39kcdMQMcYQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "eslint": "~7.18.0", - "eslint-config-standard": "16.0.3", - "eslint-config-standard-jsx": "10.0.0", - "eslint-plugin-import": "~2.24.2", - "eslint-plugin-node": "~11.1.0", - "eslint-plugin-promise": "~5.1.0", - "eslint-plugin-react": "~7.25.1", - "standard-engine": "^14.0.1" - }, - "bin": { - "standard": "bin/cmd.js" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/standard-engine": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-14.0.1.tgz", - "integrity": "sha512-7FEzDwmHDOGva7r9ifOzD3BGdTbA7ujJ50afLVdW/tK14zQEptJjbFuUfn50irqdHDcTbNh0DTIoMPynMCXb0Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "get-stdin": "^8.0.0", - "minimist": "^1.2.5", - "pkg-conf": "^3.1.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8.10" - } - }, - "node_modules/standardx": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/standardx/-/standardx-7.0.0.tgz", - "integrity": "sha512-Uh2LIWyMD0pMFn+zoAS52dforkE8MUWP6hK48iQhiohTC5DRqBgTdXdJbhSGyjamRxCfETBdfvJ7hvtme2M3jg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "standard": "^16.0.1", - "standard-engine": "^14.0.1" - }, - "bin": { - "standardx": "bin/cmd.js" - } - }, "node_modules/stat-mode": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", @@ -39489,6 +39353,15 @@ } ] }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -39515,25 +39388,6 @@ "node": ">=8" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/string.prototype.trimend": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", @@ -40138,6 +39992,7 @@ "version": "6.8.0", "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "peer": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -40153,6 +40008,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -40167,6 +40023,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -40177,12 +40034,14 @@ "node_modules/table/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true }, "node_modules/table/node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -40375,7 +40234,8 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "peer": true }, "node_modules/throat": { "version": "6.0.1", @@ -40894,39 +40754,6 @@ "node": ">=12" } }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -40983,6 +40810,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -44237,6 +44065,15 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, + "node_modules/yaml": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz", + "integrity": "sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -46418,6 +46255,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "peer": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -46435,6 +46273,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -46446,6 +46285,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "peer": true, "requires": { "sprintf-js": "~1.0.2" } @@ -46454,6 +46294,7 @@ "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "peer": true, "requires": { "type-fest": "^0.8.1" } @@ -46462,6 +46303,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "peer": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -46470,17 +46312,20 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "peer": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "peer": true }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "peer": true } } }, @@ -49496,12 +49341,6 @@ "@types/tough-cookie": "*" } }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, "@types/level-errors": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz", @@ -50048,6 +49887,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peer": true, "requires": {} }, "acorn-walk": { @@ -50344,49 +50184,12 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, - "array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - } - }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true }, - "array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - } - }, "array.prototype.reduce": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", @@ -52198,7 +52001,6 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, - "optional": true, "requires": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -52322,6 +52124,12 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, "colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", @@ -53660,6 +53468,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "peer": true, "requires": { "esutils": "^2.0.2" } @@ -53766,6 +53575,12 @@ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -54272,15 +54087,6 @@ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", "dev": true }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -54406,6 +54212,7 @@ "version": "7.18.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz", "integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==", + "peer": true, "requires": { "@babel/code-frame": "^7.0.0", "@eslint/eslintrc": "^0.3.0", @@ -54450,6 +54257,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -54461,6 +54269,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -54469,6 +54278,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "peer": true, "requires": { "sprintf-js": "~1.0.2" } @@ -54477,6 +54287,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -54486,6 +54297,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -54493,17 +54305,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true }, "eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "peer": true }, "globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "peer": true, "requires": { "type-fest": "^0.8.1" } @@ -54511,12 +54326,14 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "peer": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -54525,17 +54342,20 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "peer": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -54543,208 +54363,8 @@ "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, - "eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", - "dev": true, - "requires": {} - }, - "eslint-config-standard-jsx": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-10.0.0.tgz", - "integrity": "sha512-hLeA2f5e06W1xyr/93/QJulN/rLbUVUmqTlexv9PRKHFwEC9ffJcH2LvJhMoEqYQBEYafedgGZXH2W8NUpt5lA==", - "dev": true, - "requires": {} - }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - } - }, - "eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", - "dev": true, - "requires": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", - "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg==", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "dependencies": { - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-promise": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", - "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", - "dev": true, - "requires": {} - }, - "eslint-plugin-react": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.3.tgz", - "integrity": "sha512-ZMbFvZ1WAYSZKY662MBVEWR45VaBT6KSJCiupjrNlcdakB90juaZeDCbJq19e73JZQubqFtgETohwgAt8u5P6w==", - "dev": true, - "requires": { - "array-includes": "^3.1.3", - "array.prototype.flatmap": "^1.2.4", - "doctrine": "^2.1.0", - "estraverse": "^5.2.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.4", - "object.fromentries": "^2.0.4", - "object.hasown": "^1.0.0", - "object.values": "^1.1.4", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "string.prototype.matchall": "^4.0.5" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "peer": true } } }, @@ -54752,6 +54372,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "peer": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -54760,7 +54381,8 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "peer": true } } }, @@ -54768,6 +54390,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "peer": true, "requires": { "eslint-visitor-keys": "^1.1.0" } @@ -54781,6 +54404,7 @@ "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "peer": true, "requires": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -54790,7 +54414,8 @@ "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "peer": true } } }, @@ -54803,6 +54428,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "peer": true, "requires": { "estraverse": "^5.1.0" } @@ -54811,6 +54437,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "peer": true, "requires": { "estraverse": "^5.2.0" } @@ -56196,6 +55823,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "peer": true, "requires": { "flat-cache": "^3.0.4" } @@ -56350,6 +55978,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "peer": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -56358,7 +55987,8 @@ "flatted": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "peer": true }, "follow-redirects": { "version": "1.5.10", @@ -64529,12 +64159,6 @@ "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", "dev": true }, - "get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true - }, "get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -65603,6 +65227,12 @@ "ms": "^2.0.0" } }, + "husky": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", + "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", + "dev": true + }, "iconv-corefoundation": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", @@ -65652,7 +65282,8 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "peer": true }, "immediate": { "version": "3.3.0", @@ -65669,6 +65300,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "peer": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -68376,7 +68008,8 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "peer": true }, "json-stringify-safe": { "version": "5.0.1", @@ -68438,16 +68071,6 @@ } } }, - "jsx-ast-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz", - "integrity": "sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "object.assign": "^4.1.2" - } - }, "keccak": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", @@ -68703,6 +68326,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "peer": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -68723,12 +68347,209 @@ } } }, + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true + }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "lint-staged": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.3.tgz", + "integrity": "sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==", + "dev": true, + "requires": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.17", + "commander": "^9.3.0", + "debug": "^4.3.4", + "execa": "^6.1.0", + "lilconfig": "2.0.5", + "listr2": "^4.0.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.2", + "pidtree": "^0.6.0", + "string-argv": "^0.3.1", + "yaml": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true + }, + "cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + } + }, + "commander": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + } + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + } + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -68834,7 +68655,8 @@ "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "peer": true }, "lodash.uniq": { "version": "4.5.0", @@ -68903,6 +68725,85 @@ } } }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, "long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -71022,28 +70923,6 @@ "object-keys": "^1.1.1" } }, - "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, "object.getownpropertydescriptors": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", @@ -71056,16 +70935,6 @@ "es-abstract": "^1.20.1" } }, - "object.hasown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", - "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", - "dev": true, - "requires": { - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -71172,6 +71041,7 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "peer": true, "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -71844,6 +71714,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "peer": true, "requires": { "callsites": "^3.0.0" } @@ -72144,6 +72015,12 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, + "pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -72168,102 +72045,6 @@ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true }, - "pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true - } - } - }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -73039,7 +72820,8 @@ "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "peer": true }, "prepend-http": { "version": "2.0.0", @@ -73047,11 +72829,10 @@ "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" }, "prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.0.tgz", - "integrity": "sha512-nwoX4GMFgxoPC6diHvSwmK/4yU8FFH3V8XWtLQrbj4IBsK2pkYhG4kf/ljF/haaZ/aii+wNJqISrCDPgxGWDVQ==", - "dev": true, - "peer": true + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true }, "pretty-format": { "version": "27.5.1", @@ -73679,7 +73460,8 @@ "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "peer": true }, "regexpu-core": { "version": "5.0.1", @@ -73917,7 +73699,8 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "peer": true }, "resolve-url": { "version": "0.2.1", @@ -73983,6 +73766,12 @@ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, "rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", @@ -74534,7 +74323,6 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, - "optional": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -74546,7 +74334,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, "requires": { "color-convert": "^2.0.1" } @@ -74556,7 +74343,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "optional": true, "requires": { "color-name": "~1.1.4" } @@ -74565,8 +74351,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true + "dev": true } } }, @@ -74967,44 +74752,6 @@ } } }, - "standard": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/standard/-/standard-16.0.4.tgz", - "integrity": "sha512-2AGI874RNClW4xUdM+bg1LRXVlYLzTNEkHmTG5mhyn45OhbgwA+6znowkOGYy+WMb5HRyELvtNy39kcdMQMcYQ==", - "dev": true, - "requires": { - "eslint": "~7.18.0", - "eslint-config-standard": "16.0.3", - "eslint-config-standard-jsx": "10.0.0", - "eslint-plugin-import": "~2.24.2", - "eslint-plugin-node": "~11.1.0", - "eslint-plugin-promise": "~5.1.0", - "eslint-plugin-react": "~7.25.1", - "standard-engine": "^14.0.1" - } - }, - "standard-engine": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-14.0.1.tgz", - "integrity": "sha512-7FEzDwmHDOGva7r9ifOzD3BGdTbA7ujJ50afLVdW/tK14zQEptJjbFuUfn50irqdHDcTbNh0DTIoMPynMCXb0Q==", - "dev": true, - "requires": { - "get-stdin": "^8.0.0", - "minimist": "^1.2.5", - "pkg-conf": "^3.1.0", - "xdg-basedir": "^4.0.0" - } - }, - "standardx": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/standardx/-/standardx-7.0.0.tgz", - "integrity": "sha512-Uh2LIWyMD0pMFn+zoAS52dforkE8MUWP6hK48iQhiohTC5DRqBgTdXdJbhSGyjamRxCfETBdfvJ7hvtme2M3jg==", - "dev": true, - "requires": { - "standard": "^16.0.1", - "standard-engine": "^14.0.1" - } - }, "stat-mode": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", @@ -75246,6 +74993,12 @@ } } }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -75266,22 +75019,6 @@ "strip-ansi": "^6.0.1" } }, - "string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" - } - }, "string.prototype.trimend": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", @@ -75760,6 +75497,7 @@ "version": "6.8.0", "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "peer": true, "requires": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -75772,6 +75510,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -75780,6 +75519,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -75787,12 +75527,14 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "peer": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -75954,7 +75696,8 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "peer": true }, "throat": { "version": "6.0.1", @@ -76379,35 +76122,6 @@ } } }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - } - } - }, "tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -76458,6 +76172,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "peer": true, "requires": { "prelude-ls": "^1.2.1" } @@ -79204,6 +78919,12 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, + "yaml": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz", + "integrity": "sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==", + "dev": true + }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", From df2e9eb07ce965148f528eb9c528ad74cda2e3a1 Mon Sep 17 00:00:00 2001 From: goosewobbler Date: Mon, 27 Jun 2022 15:59:27 +0100 Subject: [PATCH 03/16] pin versions, add lint-staged --- package-lock.json | 4 ++-- package.json | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 524aaba9b..44ccbc802 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,7 +92,7 @@ "electron-builder": "23.0.3", "electron-notarize": "1.2.1", "hardhat": "2.9.9", - "husky": "^8.0.1", + "husky": "8.0.1", "jest": "28.1.1", "jest-environment-jsdom": "28.1.1", "lint-staged": "^13.0.3", @@ -101,7 +101,7 @@ "node-watch": "0.7.3", "parcel-bundler": "1.12.3", "prebuild-install": "7.1.1", - "prettier": "^2.7.1", + "prettier": "2.7.1", "rimraf": "3.0.2", "shx": "0.3.4", "stylus": "0.58.1", diff --git a/package.json b/package.json index f7dc42cc3..f786f17ee 100644 --- a/package.json +++ b/package.json @@ -143,15 +143,16 @@ "electron-builder": "23.0.3", "electron-notarize": "1.2.1", "hardhat": "2.9.9", - "husky": "^8.0.1", + "husky": "8.0.1", "jest": "28.1.1", "jest-environment-jsdom": "28.1.1", + "lint-staged": "13.0.3", "node-abi": "3.22.0", "node-gyp": "9.0.0", "node-watch": "0.7.3", "parcel-bundler": "1.12.3", "prebuild-install": "7.1.1", - "prettier": "^2.7.1", + "prettier": "2.7.1", "rimraf": "3.0.2", "shx": "0.3.4", "stylus": "0.58.1", From 57b0a80fb40342bc42eb877eb69505657926ab8c Mon Sep 17 00:00:00 2001 From: goosewobbler Date: Mon, 27 Jun 2022 15:59:48 +0100 Subject: [PATCH 04/16] add husky conf --- .husky/pre-commit | 4 ++++ .husky/pre-push | 4 ++++ 2 files changed, 8 insertions(+) create mode 100755 .husky/pre-commit create mode 100755 .husky/pre-push diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 000000000..d24fdfc60 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx lint-staged diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100755 index 000000000..3e18ca2e4 --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npm run test:unit From 282e39eb6cc5cc33a6c2f6254c1d6b78e082c3a6 Mon Sep 17 00:00:00 2001 From: goosewobbler Date: Mon, 27 Jun 2022 15:59:58 +0100 Subject: [PATCH 05/16] add prettier conf --- .prettierignore | 3 +++ .prettierrc | 6 ++++++ 2 files changed, 9 insertions(+) create mode 100644 .prettierignore create mode 100644 .prettierrc diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..2b786cc94 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +compiled +bundle +dist diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..981933e88 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "printWidth": 120, + "singleQuote": true, + "semi": false, + "quoteProps": "consistent" +} From 6e83fe6d69680378e89712dc412bd60b11523a9d Mon Sep 17 00:00:00 2001 From: goosewobbler Date: Mon, 27 Jun 2022 16:16:14 +0100 Subject: [PATCH 06/16] remove escaped quotes --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f786f17ee..a4f22ab1f 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,8 @@ "launch:dev:worker": "cross-env NODE_ENV=development LOG_WORKER=true electron ./compiled/main", "launch:dev:rinkeby": "cross-env NODE_ENV=development RINKEBY=true electron ./compiled/main", "launch:inspect": "cross-env NODE_ENV=production LOG_LEVEL=verbose electron --inspect ./compiled/main", - "format": "prettier --write \"**/*.{j,t}s\"", - "format:check": "prettier --check \"**/*.{j,t}s\"", + "format": "prettier --write '**/*.{j,t}s'", + "format:check": "prettier --check '**/*.{j,t}s'", "prod": "npm run compile && npm run bundle && npm run launch", "hot": "npm run compile && npm run bundle && npm run launch:hot", "watch:compile": "shx mkdir -p ./compiled/main/windows && npm run copy-assets && tsc -w", From 2f3131a301200ec4bd41c9500ad72a1f02c609ae Mon Sep 17 00:00:00 2001 From: goosewobbler Date: Mon, 27 Jun 2022 16:16:37 +0100 Subject: [PATCH 07/16] formatting changes --- @types/@aragon__wrapper/index.d.ts | 25 +- @types/eth-ens-namehash/index.d.ts | 2 +- @types/frame/environment.d.ts | 2 +- @types/frame/ethProvider.d.ts | 14 +- @types/frame/restore.d.ts | 10 +- @types/frame/rpc.d.ts | 56 +- @types/frame/state.d.ts | 160 ++-- app/App/Badge/index.js | 68 +- app/App/Main/Account/Activity/index.js | 24 +- app/App/Main/Account/Balances/index.js | 181 +++-- app/App/Main/Account/Default/index.js | 18 +- app/App/Main/Account/Gas/index.js | 201 +++-- app/App/Main/Account/Inventory/index.js | 238 +++--- app/App/Main/Account/Launcher/index.js | 68 +- app/App/Main/Account/Permissions/index.js | 90 ++- .../Account/Requests/AddTokenRequest/index.js | 72 +- .../Account/Requests/ChainRequest/index.js | 118 +-- .../Account/Requests/ProviderRequest/index.js | 62 +- .../Requests/SignTypedDataRequest/index.js | 145 ++-- .../Requests/SignatureRequest/index.js | 91 ++- .../approvals/BasicApproval/index.js | 40 +- .../TxApproval/approvals/TokenSpend/index.js | 240 +++--- .../TransactionRequest/TxApproval/index.js | 42 +- .../TransactionRequest/TxBar/index.js | 60 +- .../TransactionRequest/TxData/index.js | 51 +- .../TransactionRequest/TxFeeNew/index.js | 89 +-- .../TransactionRequest/TxMain/index.js | 42 +- .../TxOverlay/TxDataOverlay/index.js | 87 ++- .../TxOverlay/TxFeeOverlay/index.js | 140 ++-- .../TransactionRequest/TxOverlay/index.js | 8 +- .../TransactionRequest/TxRecipient/index.js | 67 +- .../Requests/TransactionRequest/index.js | 326 +++++--- app/App/Main/Account/Requests/index.js | 59 +- app/App/Main/Account/Settings/index.js | 66 +- app/App/Main/Account/Signer/index.js | 25 +- app/App/Main/Account/SignerStatus/index.js | 69 +- app/App/Main/Account/Verify/index.js | 44 +- app/App/Main/Account/index.js | 579 +++++++------- app/App/Main/Signer/index.js | 458 ++++++----- app/App/Main/index.js | 50 +- app/App/Menu/index.js | 64 +- app/App/Notify/AddChain/index.js | 191 +++-- app/App/Notify/AddToken/index.js | 96 +-- app/App/Notify/CustomTokens/index.js | 163 ++-- app/App/Notify/index.js | 525 +++++++------ app/App/index.js | 32 +- app/flex/index.js | 14 +- app/flex/ledger/index.js | 52 +- app/flex/trezor/index.js | 185 +++-- app/index.js | 14 +- app/store/actions/index.js | 58 +- app/store/index.js | 4 +- build/notarize.js | 12 +- dapp/App/DappTile/index.js | 15 +- dapp/App/index.js | 85 +- dapp/index.js | 10 +- dapp/link/index.js | 76 +- dapp/store/index.js | 5 +- dash/App/Accounts/Add/AddAddress/index.js | 83 +- dash/App/Accounts/Add/AddAragon/index.js | 168 ++-- dash/App/Accounts/Add/AddGnosisSafe/index.js | 181 +++-- dash/App/Accounts/Add/AddHardware/index.js | 75 +- .../Accounts/Add/AddHardwareLattice/index.js | 120 +-- dash/App/Accounts/Add/AddKeystore/index.js | 168 ++-- dash/App/Accounts/Add/AddPhrase/index.js | 128 +-- dash/App/Accounts/Add/AddRing/index.js | 123 +-- dash/App/Accounts/Add/index.js | 89 ++- dash/App/Accounts/Add/particleWorker.js | 6 +- dash/App/Accounts/Signer/index.js | 302 +++---- dash/App/Accounts/index.js | 256 +++--- dash/App/Chains/Connection/index.js | 141 ++-- dash/App/Chains/Gas/index.js | 227 +++--- dash/App/Chains/Tokens/index.js | 61 +- dash/App/Chains/Usage/index.js | 118 +-- dash/App/Chains/index.js | 556 +++++++------ dash/App/Command/index.js | 18 +- dash/App/Dapps/DappDetails/index.js | 116 +-- dash/App/Dapps/index.js | 131 ++-- dash/App/Main/index.js | 249 ++++-- dash/App/Notify/AddChain/index.js | 191 +++-- dash/App/Notify/index.js | 520 +++++++------ dash/App/Settings/index.js | 355 +++++---- dash/App/Tokens/AddToken/index.js | 101 +-- dash/App/Tokens/CustomTokens/index.js | 154 ++-- dash/App/Tokens/index.js | 14 +- dash/App/index.js | 19 +- dash/PendingSigner/index.js | 103 +-- dash/index.js | 10 +- dash/store/actions/index.js | 6 +- dash/store/index.js | 8 +- flow/App/index.js | 142 ++-- flow/index.js | 8 +- flow/store/actions/index.js | 4 +- flow/store/index.js | 11 +- flow/svg/index.js | 288 ++++--- hardhat.config.js | 105 +-- main/accountData/activity/index.js | 26 +- main/accounts/Account/index.ts | 210 ++--- main/accounts/aragon/appNames.ts | 4 +- main/accounts/aragon/index.ts | 110 +-- main/accounts/index.ts | 549 +++++++------ main/accounts/types.ts | 68 +- main/api/http.ts | 153 ++-- main/api/origins.ts | 60 +- main/api/protectedMethods.ts | 2 +- main/api/validPayload.ts | 18 +- main/api/ws.ts | 54 +- main/chains/blocks/index.ts | 71 +- main/chains/config/index.ts | 2 +- main/chains/index.d.ts | 14 +- main/chains/index.js | 91 ++- main/contracts/erc20.ts | 53 +- main/contracts/index.ts | 52 +- main/crypt/index.js | 2 +- main/crypt/typedDataUtils.js | 22 +- main/dapps/index.ts | 47 +- main/dapps/server/asset/getType/index.js | 4 +- main/dapps/server/asset/index.ts | 12 +- main/dapps/server/index.ts | 2 +- main/dapps/server/resolve/index.ts | 2 +- main/dapps/server/sessions/index.ts | 2 +- main/dapps/server/storage/index.js | 10 +- main/ens/artifacts/addresses.js | 2 +- main/ens/artifacts/interfaces.js | 242 +++--- main/externalData/assets/index.ts | 91 ++- main/externalData/balances/controller.ts | 38 +- main/externalData/balances/erc-20-abi.js | 394 +++++----- main/externalData/balances/index.ts | 89 ++- main/externalData/balances/reducers.ts | 4 +- main/externalData/balances/scan.ts | 46 +- main/externalData/balances/worker.ts | 31 +- .../externalData/coingecko/__mocks__/index.ts | 32 +- main/externalData/coingecko/index.ts | 62 +- main/externalData/index.ts | 19 +- main/externalData/inventory/index.ts | 18 +- main/externalData/inventory/tokens.ts | 29 +- main/flex/index.js | 16 +- main/index.ts | 34 +- main/ipfsRun/index.js | 12 +- main/launch/index.js | 6 +- main/menu/index.js | 18 +- main/multicall/constants.ts | 23 +- main/multicall/index.ts | 60 +- main/nebula/index.ts | 2 +- main/provider/helpers.ts | 144 ++-- main/provider/index.ts | 532 +++++++------ main/provider/proxy.ts | 4 +- main/rpc/index.js | 133 ++-- main/signers/Signer/derive.ts | 19 +- main/signers/Signer/index.ts | 54 +- main/signers/adapters.ts | 14 +- main/signers/hot/HotSigner/index.js | 33 +- main/signers/hot/HotSigner/worker.js | 35 +- main/signers/hot/RingSigner/index.js | 18 +- main/signers/hot/RingSigner/worker.js | 20 +- main/signers/hot/SeedSigner/index.js | 14 +- main/signers/hot/SeedSigner/worker.js | 18 +- main/signers/hot/index.js | 16 +- main/signers/index.ts | 86 +- main/signers/lattice/Lattice/index.ts | 92 +-- main/signers/lattice/adapter.ts | 47 +- main/signers/ledger/Ledger/eth.ts | 22 +- main/signers/ledger/Ledger/index.ts | 126 +-- main/signers/ledger/Ledger/requestQueue.ts | 31 +- main/signers/ledger/adapter.ts | 122 ++- main/signers/trezor/Trezor/index.ts | 87 ++- main/signers/trezor/adapter.ts | 35 +- main/store/__mocks__/index.ts | 15 +- main/store/actions/index.js | 239 +++--- main/store/actions/panel.js | 89 ++- main/store/index.ts | 4 +- main/store/migrations/index.js | 255 +++--- main/store/persist/__mocks__/index.js | 2 +- main/store/persist/index.js | 10 +- main/store/state/index.js | 436 +++++++---- main/time/index.js | 4 +- main/transaction/gasCalculator.ts | 46 +- main/transaction/index.ts | 69 +- main/updater/index.js | 52 +- main/windows/dialog/unhandledException.ts | 12 +- main/windows/extractColors/index.ts | 59 +- main/windows/frames/frameInstances.ts | 20 +- main/windows/frames/index.ts | 66 +- main/windows/frames/topRight.ts | 2 +- main/windows/frames/viewInstances.ts | 82 +- main/windows/index.ts | 132 ++-- main/windows/viewPreload.ts | 24 +- main/windows/webPreferences.ts | 2 +- resources/Components/Dropdown/index.js | 15 +- resources/Components/Filter/index.js | 51 +- resources/Components/FooterAux/index.js | 6 +- resources/Components/Gas/index.js | 227 +++--- resources/Components/RequestItem/index.js | 93 +-- resources/Components/RingIcon/index.js | 16 +- resources/Native/index.js | 101 +-- resources/bridge/index.js | 37 +- resources/bridge/rpc/index.js | 6 +- resources/chainMeta/index.js | 14 +- resources/connections/index.ts | 12 +- resources/constants/index.ts | 2 +- resources/domain/transaction/index.ts | 14 +- resources/link/index.js | 84 +- resources/svg/index.js | 735 ++++++++++++------ resources/utils/chains.ts | 4 +- resources/utils/index.ts | 23 +- test/app/App/Panel/AddToken/index.test.js | 38 +- .../approvals/TokenSpend/index.test.js | 89 ++- test/e2e/deploy.test.js | 37 +- test/e2e/index.test.js | 115 ++- test/e2e/origins.test.js | 60 +- test/e2e/signTypedData.js | 27 +- test/e2e/txWarnings.test.js | 46 +- test/main/accounts/index.test.js | 541 ++++++++----- test/main/api/origins.test.js | 17 +- test/main/api/validPayload.test.js | 8 +- test/main/chains/config/index.test.js | 2 +- test/main/chains/index.test.js | 134 ++-- .../externalData/balances/reducers.test.js | 14 +- test/main/externalData/balances/scan.test.js | 73 +- .../externalData/inventory/tokens.test.js | 18 +- test/main/multicall/index.test.js | 78 +- test/main/provider/helpers.test.js | 2 +- test/main/provider/index.test.js | 633 ++++++++------- test/main/signers/Signer/derive.test.js | 3 +- .../main/signers/hot/HotSigner/worker.test.js | 81 +- .../main/signers/hot/RingSigner/index.test.js | 134 ++-- .../main/signers/hot/SeedSigner/index.test.js | 58 +- .../signers/lattice/Lattice/index.test.js | 259 +++--- test/main/signers/lattice/adapter.test.js | 46 +- test/main/signers/ledger/Ledger/eth.test.js | 60 +- test/main/signers/ledger/Ledger/index.test.js | 170 ++-- test/main/signers/ledger/adapter.test.js | 68 +- test/main/store/actions/index.test.js | 366 +++++---- test/main/store/migrations/index.test.js | 188 ++--- test/main/transaction/gasCalculator.test.js | 72 +- test/main/transaction/index.test.js | 99 +-- .../windows/dialog/unhandledException.test.js | 22 +- test/resources/connections/index.test.js | 1 - .../domain/transaction/index.test.js | 6 +- test/util.js | 14 +- 240 files changed, 12637 insertions(+), 9755 deletions(-) diff --git a/@types/@aragon__wrapper/index.d.ts b/@types/@aragon__wrapper/index.d.ts index fa3ca6b5f..75e8ded98 100644 --- a/@types/@aragon__wrapper/index.d.ts +++ b/@types/@aragon__wrapper/index.d.ts @@ -1,19 +1,19 @@ declare module '@aragon/wrapper' { interface WrapperOptions { - provider: any, + provider: any apm?: { ipfs?: { - gateway: string, - }, + gateway: string + } ensRegistryAddress?: string } } interface App { - appId: string, - proxyAddress: string, - name: string, - kernel: string, + appId: string + proxyAddress: string + name: string + kernel: string agent: string } @@ -26,15 +26,20 @@ declare module '@aragon/wrapper' { } export default class Wrapper { - constructor (address: string, opts: WrapperOptions) + constructor(address: string, opts: WrapperOptions) apps: Apps init(): Promise - calculateTransactionPath(from: string, destination: string, action: string, txData: Array): Promise> + calculateTransactionPath( + from: string, + destination: string, + action: string, + txData: Array + ): Promise> } interface ResolveOptions { - provider: any, + provider: any registryAddress?: string } diff --git a/@types/eth-ens-namehash/index.d.ts b/@types/eth-ens-namehash/index.d.ts index ce3205236..310c196cd 100644 --- a/@types/eth-ens-namehash/index.d.ts +++ b/@types/eth-ens-namehash/index.d.ts @@ -1,3 +1,3 @@ declare module 'eth-ens-namehash' { - export function hash (name: string): string + export function hash(name: string): string } diff --git a/@types/frame/environment.d.ts b/@types/frame/environment.d.ts index 1cdd93b49..518086117 100644 --- a/@types/frame/environment.d.ts +++ b/@types/frame/environment.d.ts @@ -2,7 +2,7 @@ declare global { namespace NodeJS { interface ProcessEnv { BUNDLE_LOCATION: string - NODE_ENV: 'test' | 'development' | 'production', + NODE_ENV: 'test' | 'development' | 'production' // use this to override the log level in development LOG_LEVEL: 'silly' | 'debug' | 'verbose' | 'info' | 'warn' | 'error' } diff --git a/@types/frame/ethProvider.d.ts b/@types/frame/ethProvider.d.ts index 1ca271e50..f2fb72a56 100644 --- a/@types/frame/ethProvider.d.ts +++ b/@types/frame/ethProvider.d.ts @@ -1,14 +1,14 @@ declare module 'eth-provider' { interface ProviderOpts { - name?: string, + name?: string origin?: string } - + interface RequestPayload { - id?: number, - jsonrpc?: '2.0', - method: string, - params?: any[], + id?: number + jsonrpc?: '2.0' + method: string + params?: any[] chainId?: string } @@ -21,5 +21,5 @@ declare module 'eth-provider' { setChain(chainId: string) } - export default function provider (targets?: string | string[], opts?: ProviderOpts): EthereumProvider + export default function provider(targets?: string | string[], opts?: ProviderOpts): EthereumProvider } diff --git a/@types/frame/restore.d.ts b/@types/frame/restore.d.ts index 6d761eb7e..99b1ab11a 100644 --- a/@types/frame/restore.d.ts +++ b/@types/frame/restore.d.ts @@ -6,16 +6,16 @@ interface Action { updates: any[] } -declare type CallableStore = (...args: any[]) => any; +declare type CallableStore = (...args: any[]) => any interface Store extends CallableStore { - observer: (cb: () => void, id?: string) => Observer, - [actionName: string]: (...args: any) => void, + observer: (cb: () => void, id?: string) => Observer + [actionName: string]: (...args: any) => void api: { - feed: (handler: (state: any, actionBatch: Action[]) => any) => void; + feed: (handler: (state: any, actionBatch: Action[]) => any) => void } } declare module 'react-restore' { - export function create (state: any, actions: any): Store + export function create(state: any, actions: any): Store } diff --git a/@types/frame/rpc.d.ts b/@types/frame/rpc.d.ts index 4a34afcd7..35467ebe3 100644 --- a/@types/frame/rpc.d.ts +++ b/@types/frame/rpc.d.ts @@ -11,11 +11,11 @@ enum SubscriptionType { ASSETS = 'assetsChanged', CHAIN = 'chainChanged', CHAINS = 'chainsChanged', - NETWORK = 'networkChanged' + NETWORK = 'networkChanged', } interface RPCId { - id: number, + id: number jsonrpc: string } @@ -24,8 +24,8 @@ interface InternalPayload { } interface JSONRPCRequestPayload extends RPCId { - params: any[], - method: string, + params: any[] + method: string chainId?: string } @@ -38,7 +38,7 @@ interface JSONRPCErrorResponsePayload extends RPCId { } interface EVMError { - message: string, + message: string code?: number } @@ -47,27 +47,27 @@ type RPCRequestPayload = JSONRPCRequestPayload & InternalPayload declare namespace RPC { namespace GetAssets { interface Balance { - chainId: number, - name: string, - symbol: string, - balance: string, - decimals: number, + chainId: number + name: string + symbol: string + balance: string + decimals: number displayBalance: string } interface NativeCurrency extends Balance { currencyInfo: Currency } - + interface Erc20 extends Balance { tokenInfo: { - lastKnownPrice: { usd: { price: number, change24hr?: number } } - }, + lastKnownPrice: { usd: { price: number; change24hr?: number } } + } address: Address } interface Assets { - erc20?: Erc20[], + erc20?: Erc20[] nativeCurrency: Balance[] } @@ -82,29 +82,29 @@ declare namespace RPC { namespace SendTransaction { interface TxParams { - nonce?: string; - gasPrice?: string, - gas?: string, // deprecated - maxPriorityFeePerGas?: string, - maxFeePerGas?: string, - gasLimit?: string, - from?: Address, - to?: Address, - data?: string, - value?: string, - chainId: string, - type?: string, + nonce?: string + gasPrice?: string + gas?: string // deprecated + maxPriorityFeePerGas?: string + maxFeePerGas?: string + gasLimit?: string + from?: Address + to?: Address + data?: string + value?: string + chainId: string + type?: string } interface Request extends Omit { - method: 'eth_sendTransaction', + method: 'eth_sendTransaction' params: TxParams[] } } namespace Subscribe { interface Request extends Omit { - method: 'eth_subscribe', + method: 'eth_subscribe' params: SubscriptionType[] } } diff --git a/@types/frame/state.d.ts b/@types/frame/state.d.ts index 2002fc105..a80ef4d7c 100644 --- a/@types/frame/state.d.ts +++ b/@types/frame/state.d.ts @@ -1,53 +1,53 @@ interface Connection { - on: boolean, - connected: boolean, - current: string, - status: string, - network: string, + on: boolean + connected: boolean + current: string + status: string + network: string custom: string } interface Chain { - id: number, + id: number type: 'ethereum' } interface Network { - id: number, - name: string, - symbol: string, - layer: string, - on: boolean, + id: number + name: string + symbol: string + layer: string + on: boolean connection: { - primary: Connection, + primary: Connection secondary: Connection } } interface NetworkMetadata { - id: number, - name: string, - nativeCurrency: NativeCurrency, - symbol: string, + id: number + name: string + nativeCurrency: NativeCurrency + symbol: string gas: GasData } interface Session { - requests: number, - startedAt: number, - endedAt?: number, + requests: number + startedAt: number + endedAt?: number lastUpdatedAt: number } interface Origin { - chain: Chain, - name: string, + chain: Chain + name: string session: Session } interface Permission { - origin: string, - provider: boolean, // whether or not to grant access + origin: string + provider: boolean // whether or not to grant access handlerId?: string } @@ -56,81 +56,81 @@ interface NativeCurrency { } interface GasData { - fees: GasFees, + fees: GasFees price: { - selected: string, + selected: string levels: GasLevels } } interface GasFees { - nextBaseFee: string, - maxBaseFeePerGas: string, - maxPriorityFeePerGas: string, + nextBaseFee: string + maxBaseFeePerGas: string + maxPriorityFeePerGas: string maxFeePerGas: string } interface GasLevels { - slow?: string, - standard: string, - fast?: string, - asap?: string, + slow?: string + standard: string + fast?: string + asap?: string custom?: string } type HexAmount = string interface Balance { - chainId: number, - address: Address, - name: string, - symbol: string, - balance: HexAmount, - decimals: number, + chainId: number + address: Address + name: string + symbol: string + balance: HexAmount + decimals: number displayBalance: string } interface Rate { usd: { - price: BigNumber, + price: BigNumber change24hr: BigNumber } } interface Currency { - icon: string, + icon: string name: string } interface Token { - chainId: number, - name: string, - symbol: string, - address: string, - decimals: number, + chainId: number + name: string + symbol: string + address: string + decimals: number logoURI?: string } interface ViewMetadata { - id: string, - ready: boolean, - dappId: string, - ens: string, + id: string + ready: boolean + dappId: string + ens: string url: string } interface Frame { - id: string, - currentView: string, + id: string + currentView: string views: Record } interface Dapp { - id?: string, - ens: string, - status?: string, - config: Record, - manifest?: any, + id?: string + ens: string + status?: string + config: Record + manifest?: any current?: any } @@ -138,39 +138,39 @@ type SignerType = 'ring' | 'seed' | 'aragon' | 'trezor' | 'ledger' | 'lattice' type AccountStatus = 'ok' interface Signer { - id: string, - name: string, - model: string, - type: SignerType, - addresses: Address[], - status: string, + id: string + name: string + model: string + type: SignerType + addresses: Address[] + status: string createdAt: number } interface Account { - id: string, - name: string, - lastSignerType: SignerType, - active: boolean, - address: Address, - status: AccountStatus, - signer: string, - smart?: SmartAccount, - requests: Record, - ensName: string, - created: string, + id: string + name: string + lastSignerType: SignerType + active: boolean + address: Address + status: AccountStatus + signer: string + smart?: SmartAccount + requests: Record + ensName: string + created: string balances: { lastUpdated?: number } } interface SmartAccount { - name: string, - chain: Chain, - type: string, - actor: any, // TODO: is this an address or an object? - agent: Address, - ens: string, - apps: any, + name: string + chain: Chain + type: string + actor: any // TODO: is this an address or an object? + agent: Address + ens: string + apps: any dao: any } diff --git a/app/App/Badge/index.js b/app/App/Badge/index.js index 1944e07d7..38e7f05d9 100644 --- a/app/App/Badge/index.js +++ b/app/App/Badge/index.js @@ -3,23 +3,25 @@ import Restore from 'react-restore' import link from '../../../resources/link' class Bridge extends React.Component { - render () { + render() { if (this.store('view.badge') === 'updateReady') { return ( -
-
-
-
- Your update is ready, relaunch Frame to switch -
-
-
-
this.store.updateBadge()}>Ok
+
+
+
+
Your update is ready, relaunch Frame to switch
+
+
+
this.store.updateBadge()}> + Ok +
-
-
-
link.send('tray:updateRestart')}>Relaunch Now
+
+
+
link.send('tray:updateRestart')}> + Relaunch Now +
@@ -28,41 +30,45 @@ class Bridge extends React.Component { ) } else if (this.store('view.badge') === 'updateAvailable') { return ( -
-
-
-
- A new update is available, would you like to install it? -
-
-
+
+
+
+
A new update is available, would you like to install it?
+
+
{ + className="badgeInputInner" + onMouseDown={() => { link.send('tray:installAvailableUpdate', true, false) }} style={{ color: 'var(--good)' }} - >Install Update + > + Install Update
-
-
+
+
{ + className="badgeInputInner" + onMouseDown={() => { link.send('tray:installAvailableUpdate', false, false) }} style={{ color: 'var(--moon)' }} - >Remind Me Later + > + Remind Me Later
-
-
+
+
{ + className="badgeInputInner badgeInputSmall" + onMouseDown={() => { link.send('tray:installAvailableUpdate', false, true) }} - >Skip This Version + > + Skip This Version
diff --git a/app/App/Main/Account/Activity/index.js b/app/App/Main/Account/Activity/index.js index f9555aeec..34512397e 100644 --- a/app/App/Main/Account/Activity/index.js +++ b/app/App/Main/Account/Activity/index.js @@ -3,31 +3,31 @@ import Restore from 'react-restore' import link from '../../../../../resources/link' class Balances extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.moduleRef = React.createRef() this.resizeObserver = new ResizeObserver(() => { if (this.moduleRef && this.moduleRef.current) { - link.send('tray:action', 'updateAccountModule', this.props.moduleId, { height: this.moduleRef.current.clientHeight }) + link.send('tray:action', 'updateAccountModule', this.props.moduleId, { + height: this.moduleRef.current.clientHeight, + }) } }) this.state = { - expand: false + expand: false, } } - componentDidMount () { + componentDidMount() { this.resizeObserver.observe(this.moduleRef.current) - } - render () { + } + render() { return ( -
-
{'activity monitor'}
-
- {'Coming Soon'} -
+
+
{'activity monitor'}
+
{'Coming Soon'}
) } } -export default Restore.connect(Balances) \ No newline at end of file +export default Restore.connect(Balances) diff --git a/app/App/Main/Account/Balances/index.js b/app/App/Main/Account/Balances/index.js index 6dc9cde40..ffc29e300 100644 --- a/app/App/Main/Account/Balances/index.js +++ b/app/App/Main/Account/Balances/index.js @@ -14,30 +14,30 @@ import BigNumber from 'bignumber.js' const UNKNOWN = '?' const NATIVE_CURRENCY = '0x0000000000000000000000000000000000000000' -function isNativeCurrency (address) { +function isNativeCurrency(address) { return address === NATIVE_CURRENCY } -function formatBalance (balance, totalValue, decimals = 8) { +function formatBalance(balance, totalValue, decimals = 8) { const isZero = balance.isZero() if (!isZero && balance.toNumber() < 0.001 && totalValue.toNumber() < 1) return '<0.001' return new Intl.NumberFormat('us-US', { - minimumFractionDigits: 2, - maximumFractionDigits: 8 - }).format(balance.toFixed(decimals, BigNumber.ROUND_FLOOR)) + minimumFractionDigits: 2, + maximumFractionDigits: 8, + }).format(balance.toFixed(decimals, BigNumber.ROUND_FLOOR)) } -function formatUsdRate (rate, decimals = 2) { +function formatUsdRate(rate, decimals = 2) { return rate.isNaN() ? UNKNOWN : new Intl.NumberFormat('us-US', { minimumFractionDigits: decimals, - maximumFractionDigits: decimals + maximumFractionDigits: decimals, }).format(rate.toFixed(decimals, BigNumber.ROUND_FLOOR)) } -function balance (rawBalance, quote = {}) { +function balance(rawBalance, quote = {}) { const balance = BigNumber(rawBalance.balance || 0).shiftedBy(-rawBalance.decimals) const usdRate = BigNumber(quote.price) const totalValue = balance.times(usdRate) @@ -49,11 +49,10 @@ function balance (rawBalance, quote = {}) { price: formatUsdRate(usdRate), priceChange: !usdRate.isNaN() && BigNumber(quote['change24hr'] || 0).toFixed(2), totalValue: totalValue.isNaN() ? BigNumber(0) : totalValue, - displayValue: formatUsdRate(totalValue, 0) + displayValue: formatUsdRate(totalValue, 0), } } - class Balance extends React.Component { // constructor (...args) { // super(...args) @@ -68,7 +67,7 @@ class Balance extends React.Component { // }, 200) // } - render () { + render() { const { symbol, balance, i, scanning, chainId } = this.props const change = parseFloat(balance.priceChange) const direction = change < 0 ? -1 : change > 0 ? 1 : 0 @@ -86,47 +85,55 @@ class Balance extends React.Component { const chainHex = '0x' + chainId.toString(16) return ( -
this.setState({ selected: i })}> -
-
- this.setState({ selected: i })} + > +
+
+
-
- {chainMeta[chainHex] ? chainMeta[chainHex].name : '' } -
-
- {name} + {chainMeta[chainHex] ? chainMeta[chainHex].name : ''}
-
= 12 ? { fontSize: '15px', top: '10px' } : {}}> - - {symbol.toUpperCase()} - - = 12 ? { marginTop: '-3px' } : {}} - > +
{name}
+
= 12 ? { fontSize: '15px', top: '10px' } : {}} + > + {symbol.toUpperCase()} + = 12 ? { marginTop: '-3px' } : {}}> {balance.displayBalance}
-
-
- - {svg.usd(10)}{balance.price} +
+
+ + {svg.usd(10)} + {balance.price} - ({direction === 1 ? '+' : ''}{balance.priceChange ? balance.priceChange + '%' : ''}) + + ({direction === 1 ? '+' : ''} + {balance.priceChange ? balance.priceChange + '%' : ''}) +
-
- {svg.usd(10)}{balance.displayValue} +
+ {svg.usd(10)} + {balance.displayValue}
@@ -136,7 +143,7 @@ class Balance extends React.Component { } class Balances extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.moduleRef = React.createRef() if (!this.props.expanded) { @@ -144,7 +151,9 @@ class Balances extends React.Component { if (this.moduleRef && this.moduleRef.current) { clearTimeout(this.resizeTimer) this.resizeTimer = setTimeout(() => { - link.send('tray:action', 'updateAccountModule', this.props.moduleId, { height: this.moduleRef.current.clientHeight }) + link.send('tray:action', 'updateAccountModule', this.props.moduleId, { + height: this.moduleRef.current.clientHeight, + }) }, 100) } }) @@ -155,26 +164,26 @@ class Balances extends React.Component { open: false, selected: 0, shadowTop: 0, - expand: false + expand: false, } } - componentDidMount () { + componentDidMount() { if (this.resizeObserver) this.resizeObserver.observe(this.moduleRef.current) } - componentWillUnmount () { + componentWillUnmount() { if (this.resizeObserver) this.resizeObserver.disconnect() } - getBalances (rawBalances, rates) { + getBalances(rawBalances, rates) { const networks = this.store('main.networks.ethereum') const networksMeta = this.store('main.networksMeta.ethereum') const balances = rawBalances // only show balances from connected networks - .filter(rawBalance => isNetworkConnected(networks[rawBalance.chainId])) - .map(rawBalance => { + .filter((rawBalance) => isNetworkConnected(networks[rawBalance.chainId])) + .map((rawBalance) => { const isNative = isNativeCurrency(rawBalance.address) const nativeCurrencyInfo = networksMeta[rawBalance.chainId].nativeCurrency || {} @@ -195,7 +204,7 @@ class Balances extends React.Component { return { balances, totalDisplayValue: formatUsdRate(totalValue, 0), totalValue } } - render () { + render() { const { address, lastSignerType } = this.store('main.accounts', this.props.id) const storedBalances = this.store('main.balances', address) || [] const rates = this.store('main.rates') @@ -206,76 +215,82 @@ class Balances extends React.Component { const lastBalanceUpdate = this.store('main.accounts', address, 'balances.lastUpdated') // scan if balances are more than a minute old - const scanning = !lastBalanceUpdate || (new Date() - new Date(lastBalanceUpdate)) > (1000 * 60) + const scanning = !lastBalanceUpdate || new Date() - new Date(lastBalanceUpdate) > 1000 * 60 const hotSigner = ['ring', 'seed'].includes(lastSignerType) return ( -
balances {this.props.expanded ? ( -
this.props.expandModule(false)}> +
this.props.expandModule(false)}> {svg.close(12)}
) : null}
{scanning ? ( -
-
+
+
) : null} -
+
{balances.map(({ chainId, symbol, ...balance }, i) => { return })}
-
+
{!this.props.expanded ? ( -
-
this.props.expandModule(this.props.moduleId)}> +
+
this.props.expandModule(this.props.moduleId)} + > {allBalances.length - 4 > 0 ? `+${allBalances.length - 4} More` : 'More'}
) : ( -
-
{ - link.send('tray:action', 'navDash', { view: 'tokens', data: { notify: 'addToken' }}) - }}> +
+
{ + link.send('tray:action', 'navDash', { view: 'tokens', data: { notify: 'addToken' } }) + }} + > Add Token
)} -
-
- {'Total: '} -
-
- {svg.usd(11)}{balances.length > 0 ? totalDisplayValue : '---.--'} +
+
{'Total: '}
+
+ {svg.usd(11)} + {balances.length > 0 ? totalDisplayValue : '---.--'}
{totalValue.toNumber() > 10000 && hotSigner ? ( -
this.setState({ showHighHotMessage: !this.state.showHighHotMessage })} style={scanning ? { opacity: 0 } : { opacity: 1 }} > -
- {'high value account is using hot signer'} -
- {this.state.showHighHotMessage ?
- {'We recommend using one of our supported hardware signers to increase the security of your account'} -
: null} +
{'high value account is using hot signer'}
+ {this.state.showHighHotMessage ? ( +
+ {'We recommend using one of our supported hardware signers to increase the security of your account'} +
+ ) : null}
) : null}
diff --git a/app/App/Main/Account/Default/index.js b/app/App/Main/Account/Default/index.js index e40223c3f..4c9d5bc4a 100644 --- a/app/App/Main/Account/Default/index.js +++ b/app/App/Main/Account/Default/index.js @@ -2,7 +2,7 @@ import React from 'react' import Restore from 'react-restore' class Block extends React.Component { - constructor (props, context) { + constructor(props, context) { super(props, context) this.moduleRef = React.createRef() this.resizeObserver = new ResizeObserver(() => { @@ -11,22 +11,22 @@ class Block extends React.Component { } }) } - componentDidMount () { + componentDidMount() { this.resizeObserver.observe(this.moduleRef.current) - } - componentWillUnmount () { + } + componentWillUnmount() { this.resizeObserver.disconnect() } - render () { + render() { return (
-
{this.props.moduleId}
-
-
{`Module Not Found`}
+
{this.props.moduleId}
+
+
{`Module Not Found`}
) } } -export default Restore.connect(Block) \ No newline at end of file +export default Restore.connect(Block) diff --git a/app/App/Main/Account/Gas/index.js b/app/App/Main/Account/Gas/index.js index 053dcc8e5..adb4d1e1d 100644 --- a/app/App/Main/Account/Gas/index.js +++ b/app/App/Main/Account/Gas/index.js @@ -12,71 +12,105 @@ const gasToSendToken = 65 * 1000 const gasForDexSwap = 200 * 1000 class Gas extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.moduleRef = React.createRef() this.resizeObserver = new ResizeObserver(() => { if (this.moduleRef && this.moduleRef.current) { - link.send('tray:action', 'updateAccountModule', this.props.moduleId, { height: this.moduleRef.current.clientHeight }) + link.send('tray:action', 'updateAccountModule', this.props.moduleId, { + height: this.moduleRef.current.clientHeight, + }) } }) this.state = { - expand: false + expand: false, } } - componentDidMount () { + componentDidMount() { this.resizeObserver.observe(this.moduleRef.current) - } - renderFeeTime (time) { - if (!time) return <>?? - if (time < 60) return <>~{time}s - if (time < 3600) return <>~{Math.round(time / 60)}m - return <>~{Math.round(time / 3600)}h } - toDisplayUSD (bn) { + renderFeeTime(time) { + if (!time) + return ( + <> + ?? + + ) + if (time < 60) + return ( + <> + ~ + {time} + s + + ) + if (time < 3600) + return ( + <> + ~ + {Math.round(time / 60)} + m + + ) + return ( + <> + ~ + {Math.round(time / 3600)} + h + + ) + } + toDisplayUSD(bn) { return parseFloat( - bn.toNumber() >= 1 ? bn.toFixed(0, BigNumber.ROUND_UP).toString() : - bn.toFixed(2, BigNumber.ROUND_UP).toString() + bn.toNumber() >= 1 ? bn.toFixed(0, BigNumber.ROUND_UP).toString() : bn.toFixed(2, BigNumber.ROUND_UP).toString() ) } - roundGwei (gwei) { + roundGwei(gwei) { if (gwei && gwei < 0.001) return '‹0.001' return parseFloat( - gwei >= 10 ? Math.round(gwei) : - gwei >= 5 ? Math.round(gwei * 10) / 10 : - gwei >= 1 ? Math.round(gwei * 100) / 100 : - Math.round(gwei * 1000) / 1000 + gwei >= 10 + ? Math.round(gwei) + : gwei >= 5 + ? Math.round(gwei * 10) / 10 + : gwei >= 1 + ? Math.round(gwei * 100) / 100 + : Math.round(gwei * 1000) / 1000 ) } - levelDisplay (level) { - const gwei = weiToGwei(hexToInt(level)) + levelDisplay(level) { + const gwei = weiToGwei(hexToInt(level)) return this.roundGwei(gwei) || 0 } - txEstimate (value, gasLimit, nativeUSD) { - return this.toDisplayUSD(BigNumber(value * gasLimit).shiftedBy(-9).multipliedBy(nativeUSD)) + txEstimate(value, gasLimit, nativeUSD) { + return this.toDisplayUSD( + BigNumber(value * gasLimit) + .shiftedBy(-9) + .multipliedBy(nativeUSD) + ) } - txEstimates (type, id, gasPrice, calculatedFees, currentSymbol) { - + txEstimates(type, id, gasPrice, calculatedFees, currentSymbol) { const estimates = [ { label: 'Send ' + currentSymbol, - estimatedGas: gasToSendEth + estimatedGas: gasToSendEth, }, { label: 'Send Tokens', - estimatedGas: gasToSendToken + estimatedGas: gasToSendToken, }, { label: 'Dex Swap', - estimatedGas: gasForDexSwap - } + estimatedGas: gasForDexSwap, + }, ] const layer = this.store('main.networks', type, id, 'layer') const nativeCurrency = this.store('main.networksMeta', type, id, 'nativeCurrency') - const nativeUSD = BigNumber(nativeCurrency && nativeCurrency.usd && layer !== 'testnet' ? nativeCurrency.usd.price : 0) + const nativeUSD = BigNumber( + nativeCurrency && nativeCurrency.usd && layer !== 'testnet' ? nativeCurrency.usd.price : 0 + ) if (id === 10) { // Optimism specific calculations @@ -93,90 +127,99 @@ class Gas extends React.Component { return this.toDisplayUSD(l1Estimate.plus(l2Estimate).shiftedBy(-9).multipliedBy(nativeUSD)) } - return estimates.map(({ label, estimatedGas }, i) => ( - { - low: optimismEstimate(l1GasEstimates[i], estimatedGas), - high: optimismEstimate(l1GasEstimates[i], estimatedGas), - label - } - )) + return estimates.map(({ label, estimatedGas }, i) => ({ + low: optimismEstimate(l1GasEstimates[i], estimatedGas), + high: optimismEstimate(l1GasEstimates[i], estimatedGas), + label, + })) } else { const low = calculatedFees ? this.roundGwei(calculatedFees.actualBaseFee + calculatedFees.priorityFee) : gasPrice - return estimates.map(({ label, estimatedGas }) => ( - { - low: this.txEstimate(low, estimatedGas, nativeUSD), - high: this.txEstimate(gasPrice, estimatedGas, nativeUSD), - label - } - )) + return estimates.map(({ label, estimatedGas }) => ({ + low: this.txEstimate(low, estimatedGas, nativeUSD), + high: this.txEstimate(gasPrice, estimatedGas, nativeUSD), + label, + })) } } - render () { + render() { const { type, id } = this.store('main.currentNetwork') const levels = this.store('main.networksMeta', type, id, 'gas.price.levels') const fees = this.store('main.networksMeta', type, id, 'gas.price.fees') const currentSymbol = this.store('main.networks', type, id, 'symbol') || 'ETH' const gasPrice = this.levelDisplay(levels.fast) - const { nextBaseFee, maxPriorityFeePerGas } = (fees || {}) + const { nextBaseFee, maxPriorityFeePerGas } = fees || {} const calculatedFees = { - actualBaseFee: this.roundGwei((weiToGwei(hexToInt(nextBaseFee)))), - priorityFee: this.levelDisplay(maxPriorityFeePerGas) + actualBaseFee: this.roundGwei(weiToGwei(hexToInt(nextBaseFee))), + priorityFee: this.levelDisplay(maxPriorityFeePerGas), } const feeEstimatesUSD = this.txEstimates(type, id, gasPrice, fees ? calculatedFees : null, currentSymbol) return (
-
{'Fee Monitor'}
-
- {this.state.baseHover ?
The current base fee is added with a buffer to cover the next 3 blocks, any amount greater than your block's base fee is refunded
: null} - {this.state.prioHover ?
A priority tip paid to validators is added to incentivize quick inclusion of your transaction into a block
: null } -
- {calculatedFees.actualBaseFee} - {'GWEI'} - {'Current Base'} +
{'Fee Monitor'}
+
+ {this.state.baseHover ? ( +
+ The current base fee is added with a buffer to cover the next 3 blocks, any amount greater than your + block's base fee is refunded +
+ ) : null} + {this.state.prioHover ? ( +
+ A priority tip paid to validators is added to incentivize quick inclusion of your transaction into a block +
+ ) : null} +
+ {calculatedFees.actualBaseFee} + {'GWEI'} + {'Current Base'}
-
-
+
this.setState({ baseHover: true })} - style={ !fees ? { pointerEvents: 'none', opacity: 0 } : {}} + style={!fees ? { pointerEvents: 'none', opacity: 0 } : {}} onMouseLeave={() => this.setState({ baseHover: false })} > -
+
-
{svg.chevron(27)}
+
+
+
{svg.chevron(27)}
- {gasPrice} - {'GWEI'} - {'Recommended'} -
{gasPrice} + {'GWEI'} + {'Recommended'} +
this.setState({ prioHover: true })} onMouseLeave={() => this.setState({ prioHover: false })} > -
{svg.chevron(27)}
+
{svg.chevron(27)}
-
- {calculatedFees.priorityFee} - {'GWEI'} - {'Priority Tip'} +
+ {calculatedFees.priorityFee} + {'GWEI'} + {'Priority Tip'}
-
- {feeEstimatesUSD.map((estimate) =>{ +
+ {feeEstimatesUSD.map((estimate) => { return ( -
-
- {!estimate.low || estimate.low >= 1 ? `$` : '<$'} - {`${!estimate.low ? 0 : estimate.low < 1 ? 1 : estimate.low}`} +
+
+ + {!estimate.low || estimate.low >= 1 ? `$` : '<$'} + + {`${ + !estimate.low ? 0 : estimate.low < 1 ? 1 : estimate.low + }`}
-
{estimate.label}
+
{estimate.label}
) })} diff --git a/app/App/Main/Account/Inventory/index.js b/app/App/Main/Account/Inventory/index.js index 76ce49e3e..1dcda41e2 100644 --- a/app/App/Main/Account/Inventory/index.js +++ b/app/App/Main/Account/Inventory/index.js @@ -4,140 +4,172 @@ import link from '../../../../../resources/link' import svg from '../../../../../resources/svg' class Inventory extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.moduleRef = React.createRef() if (!this.props.expanded) { this.resizeObserver = new ResizeObserver(() => { if (this.moduleRef && this.moduleRef.current) { - link.send('tray:action', 'updateAccountModule', this.props.moduleId, { height: this.moduleRef.current.clientHeight }) + link.send('tray:action', 'updateAccountModule', this.props.moduleId, { + height: this.moduleRef.current.clientHeight, + }) } }) } this.state = { expand: false, - hoverAsset: false + hoverAsset: false, } } - componentDidMount () { + componentDidMount() { if (this.resizeObserver) this.resizeObserver.observe(this.moduleRef.current) } - componentWillUnmount () { + componentWillUnmount() { if (this.resizeObserver) this.resizeObserver.disconnect() } - render () { + render() { const inventory = this.store('main.inventory', this.props.id) const collections = Object.keys(inventory || {}) return ( -
-
+
+
{'Inventory'} {this.props.expanded ? ( -
{ - this.props.expandModule(false) - }}> +
{ + this.props.expandModule(false) + }} + > {svg.close(12)}
) : null} -
+
- {collections.length ? collections.filter(k => { - if (this.props.expanded) { - const expandedData = this.props.expandedData || {} - const current = expandedData.currentCollection - return current === k - } else { - return true - } - }).sort((a, b) => { - const assetsLengthA = Object.keys(inventory[a].items).length - const assetsLengthB = Object.keys(inventory[b].items).length - if (assetsLengthA > assetsLengthB) return -1 - if (assetsLengthA < assetsLengthB) return 1 - return 0 - }).map(k => { - return ( -
{ - this.props.expandModule(this.props.moduleId, { currentCollection: k }) - }} - style={this.props.expanded ? { - position: 'absolute', - top: '30px', - right: '0', - bottom: '0', - left: '0' - } : {}} - > - {this.props.expanded ? ( - <> -
- {this.state.hoverAsset ? ( -
- {this.state.hoverAsset.img ? : null} + {collections.length ? ( + collections + .filter((k) => { + if (this.props.expanded) { + const expandedData = this.props.expandedData || {} + const current = expandedData.currentCollection + return current === k + } else { + return true + } + }) + .sort((a, b) => { + const assetsLengthA = Object.keys(inventory[a].items).length + const assetsLengthB = Object.keys(inventory[b].items).length + if (assetsLengthA > assetsLengthB) return -1 + if (assetsLengthA < assetsLengthB) return 1 + return 0 + }) + .map((k) => { + return ( +
{ + this.props.expandModule(this.props.moduleId, { currentCollection: k }) + }} + style={ + this.props.expanded + ? { + position: 'absolute', + top: '30px', + right: '0', + bottom: '0', + left: '0', + } + : {} + } + > + {this.props.expanded ? ( + <> +
+ {this.state.hoverAsset ? ( +
+ {this.state.hoverAsset.img ? ( + + ) : null} +
+ ) : ( +
+ )} +
+
+ {this.state.hoverAsset ? this.state.hoverAsset.name : inventory[k].meta.name} +
+
+ {Object.keys(inventory[k].items || {}) + .sort((a, b) => { + a = inventory[k].items[a].tokenId + b = inventory[k].items[b].tokenId + return a < b ? -1 : b > a ? 1 : 0 + }) + .map((id) => { + const { tokenId, name, img, openSeaLink } = inventory[k].items[id] + return ( +
{ + this.store.notify('openExternal', { url: openSeaLink }) + }} + onMouseEnter={() => { + this.setState({ + hoverAsset: { + name, + tokenId, + img, + }, + }) + }} + onMouseLeave={() => { + this.setState({ + hoverAsset: false, + }) + }} + > + {img ? ( + + ) : null} +
+ ) + })} +
- ) : ( -
- )} -
-
{this.state.hoverAsset ? this.state.hoverAsset.name : inventory[k].meta.name}
-
- {Object.keys(inventory[k].items || {}).sort((a, b) => { - a = inventory[k].items[a].tokenId - b = inventory[k].items[b].tokenId - return a < b ? -1 : b > a ? 1 : 0 - }).map(id => { - const { tokenId, name, img, openSeaLink } = inventory[k].items[id] - return ( -
{ - this.store.notify('openExternal', { url: openSeaLink }) - }} - onMouseEnter={() => { - this.setState({ - hoverAsset: { - name, - tokenId, - img - } - }) - }} - onMouseLeave={() => { - this.setState({ - hoverAsset: false - }) - }} - > - {img ? : null} -
- ) - })} -
-
- - ) : ( -
-
{inventory[k].meta.name}
-
{Object.keys(inventory[k].items).length}
-
+ + ) : ( +
+
{inventory[k].meta.name}
+
{Object.keys(inventory[k].items).length}
+
+
+ )}
- )} -
- ) - }) : inventory ? ( -
No Items Found
+ ) + }) + ) : inventory ? ( +
No Items Found
) : ( -
Loading Items..
+
Loading Items..
)}
diff --git a/app/App/Main/Account/Launcher/index.js b/app/App/Main/Account/Launcher/index.js index 6b09dc1f4..e3ad8f4cb 100644 --- a/app/App/Main/Account/Launcher/index.js +++ b/app/App/Main/Account/Launcher/index.js @@ -7,20 +7,36 @@ import oneInch from './1inch.png' import uniswap from './uniswap.png' class Launcher extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.moduleRef = React.createRef() this.resizeObserver = new ResizeObserver(() => { if (this.moduleRef && this.moduleRef.current) { - link.send('tray:action', 'updateAccountModule', this.props.moduleId, { height: this.moduleRef.current.clientHeight }) + link.send('tray:action', 'updateAccountModule', this.props.moduleId, { + height: this.moduleRef.current.clientHeight, + }) } }) this.state = { - expand: false + expand: false, + } + this.e = { + p: [ + 'QXJyb3dVcA==', + 'QXJyb3dVcA==', + 'QXJyb3dEb3du', + 'QXJyb3dEb3du', + 'QXJyb3dMZWZ0', + 'QXJyb3dSaWdodA==', + 'QXJyb3dMZWZ0', + 'QXJyb3dSaWdodA==', + 'Yg==', + 'YQ==', + ], + i: 0, } - this.e = { p: ['QXJyb3dVcA==', 'QXJyb3dVcA==', 'QXJyb3dEb3du', 'QXJyb3dEb3du', 'QXJyb3dMZWZ0', 'QXJyb3dSaWdodA==', 'QXJyb3dMZWZ0', 'QXJyb3dSaWdodA==', 'Yg==', 'YQ=='], i: 0 } } - h (e) { + h(e) { if (this.e.p.indexOf(btoa(e.key)) < 0 || btoa(e.key) !== this.e.p[this.e.i]) { this.e.i = 0 } else { @@ -29,35 +45,39 @@ class Launcher extends React.Component { if (this.e.p.length === this.e.i) { this.e.i = 0 if (this.state.l === true) { - this.setState({l: false}) + this.setState({ l: false }) } else { - this.setState({l: true}) + this.setState({ l: true }) } } } } - componentDidMount () { + componentDidMount() { this.resizeObserver.observe(this.moduleRef.current) document.addEventListener('keydown', this.h.bind(this)) } - componentWillUnmount () { + componentWillUnmount() { link.send('tray:action', 'updateAccountModule', this.props.moduleId, { height: 0 }) document.removeEventListener('keydown', this.h.bind(this)) } - glitch (el) { + glitch(el) { return (
- {[...Array(10).keys()].map(i =>
{el}
)} - {!this.state.glitchOn ?
{el}
: null } + {[...Array(10).keys()].map((i) => ( +
+ {el} +
+ ))} + {!this.state.glitchOn ?
{el}
: null}
) } - render () { + render() { return ( -
-
-
+
+
{ this.setState({ glitchOn: false }) link.send('*:addFrame', 'dappLauncher') @@ -66,14 +86,12 @@ class Launcher extends React.Component { onMouseOver={() => this.setState({ glitchOn: true })} onMouseLeave={() => this.setState({ glitchOn: false })} > - {this.glitch(
-
- {svg.send(13)} -
-
- {'Send'} + {this.glitch( +
+
{svg.send(13)}
+
{'Send'}
-
)} + )}
@@ -81,4 +99,4 @@ class Launcher extends React.Component { } } -export default Restore.connect(Launcher) \ No newline at end of file +export default Restore.connect(Launcher) diff --git a/app/App/Main/Account/Permissions/index.js b/app/App/Main/Account/Permissions/index.js index a79934832..531f06959 100644 --- a/app/App/Main/Account/Permissions/index.js +++ b/app/App/Main/Account/Permissions/index.js @@ -4,70 +4,80 @@ import link from '../../../../../resources/link' import svg from '../../../../../resources/svg' class Balances extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.moduleRef = React.createRef() if (!this.props.expanded) { this.resizeObserver = new ResizeObserver(() => { if (this.moduleRef && this.moduleRef.current) { - link.send('tray:action', 'updateAccountModule', this.props.moduleId, { height: this.moduleRef.current.clientHeight }) + link.send('tray:action', 'updateAccountModule', this.props.moduleId, { + height: this.moduleRef.current.clientHeight, + }) } }) } } - componentDidMount () { + componentDidMount() { if (this.resizeObserver) this.resizeObserver.observe(this.moduleRef.current) } - componentWillUnmount () { + componentWillUnmount() { if (this.resizeObserver) this.resizeObserver.disconnect() } - render () { + render() { const i = 0 // const transform = viewIndex === i ? 'translateX(0)' : viewIndex > i ? 'translateX(-100%)' : 'translateX(100%)' // const id = this.store('selected.current') // const address = this.store('main.accounts', this.props.id, 'address') const permissions = this.store('main.permissions', this.props.id) || {} - let permissionList = Object.keys(permissions).sort((a, b) => a.origin < b.origin ? -1 : 1) + let permissionList = Object.keys(permissions).sort((a, b) => (a.origin < b.origin ? -1 : 1)) if (!this.props.expanded) permissionList = permissionList.slice(0, 3) - + return ( -
-
+
{'Permissions'} {this.props.expanded ? ( -
this.props.expandModule(false)}> +
this.props.expandModule(false)}> {svg.close(12)}
) : null} -
+
-
+
{permissionList.length === 0 ? ( -
-
-
No Permissions Set
+
+
+
No Permissions Set
) : ( - permissionList.map(o => { + permissionList.map((o) => { return ( -
-
-
{permissions[o].origin}
-
link.send('tray:action', 'toggleAccess', this.props.id, o)} +
+
+
{permissions[o].origin}
+
link.send('tray:action', 'toggleAccess', this.props.id, o)} > -
+
@@ -75,25 +85,33 @@ class Balances extends React.Component { }) )} {this.props.expanded ? ( -
-
{ - link.send('tray:action', 'clearPermissions', this.props.id) - }} className='moduleButton'>Clear All Permissions
+
+
{ + link.send('tray:action', 'clearPermissions', this.props.id) + }} + className="moduleButton" + > + Clear All Permissions +
) : null}
{!this.props.expanded ? ( -
-
-
this.props.expandModule(this.props.moduleId)}> +
+
+
this.props.expandModule(this.props.moduleId)} + > More
- ) : null } + ) : null}
) } } -export default Restore.connect(Balances) \ No newline at end of file +export default Restore.connect(Balances) diff --git a/app/App/Main/Account/Requests/AddTokenRequest/index.js b/app/App/Main/Account/Requests/AddTokenRequest/index.js index 52b7ca3be..81f71ed1a 100644 --- a/app/App/Main/Account/Requests/AddTokenRequest/index.js +++ b/app/App/Main/Account/Requests/AddTokenRequest/index.js @@ -4,7 +4,7 @@ import svg from '../../../../../../resources/svg' import link from '../../../../../../resources/link' class AddTokenRequest extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.state = { allowInput: false } setTimeout(() => { @@ -12,7 +12,7 @@ class AddTokenRequest extends React.Component { }, 200) } - render () { + render() { const status = this.props.req.status const notice = this.props.req.notice @@ -31,40 +31,46 @@ class AddTokenRequest extends React.Component { const height = mode === 'monitor' ? '80px' : '340px' const token = this.props.req.token return ( -
-
+
+
{notice ? ( -
- {(_ => { +
+ {((_) => { if (status === 'pending') { return ( -
-
+
+
+
+
) } else if (status === 'success') { - return
{svg.octicon('check', { height: 80 })}
+ return
{svg.octicon('check', { height: 80 })}
} else if (status === 'error' || status === 'declined') { - return
{svg.octicon('circle-slash', { height: 80 })}
+ return
{svg.octicon('circle-slash', { height: 80 })}
} })()}
) : ( -
+
{ -
-
{svg.octicon('shield', { height: 20 })}
-
Add Token
+
+
{svg.octicon('shield', { height: 20 })}
+
Add Token
} -
-
+
+
{this.store('main.origins', this.props.req.origin, 'name')}
{'wants to add a token'}
-
-
{token.symbol.toUpperCase()}
-
{token.name}
-
{token.address}
+
+
{token.symbol.toUpperCase()}
+
{token.name}
+
{token.address}
@@ -72,20 +78,24 @@ class AddTokenRequest extends React.Component { )}
{ -
+
{ if (this.state.allowInput) link.send('tray:addToken', false, this.props.req) - }}> -
Decline
+ className="requestDecline" + style={{ pointerEvents: this.state.allowInput ? 'auto' : 'none' }} + onClick={() => { + if (this.state.allowInput) link.send('tray:addToken', false, this.props.req) + }} + > +
Decline
{ if (this.state.allowInput) this.store.notify('addToken', this.props.req) - }}> -
Review
+ className="requestSign" + style={{ pointerEvents: this.state.allowInput ? 'auto' : 'none' }} + onClick={() => { + if (this.state.allowInput) this.store.notify('addToken', this.props.req) + }} + > +
Review
} diff --git a/app/App/Main/Account/Requests/ChainRequest/index.js b/app/App/Main/Account/Requests/ChainRequest/index.js index b01fcf091..1778f6c93 100644 --- a/app/App/Main/Account/Requests/ChainRequest/index.js +++ b/app/App/Main/Account/Requests/ChainRequest/index.js @@ -4,7 +4,7 @@ import svg from '../../../../../../resources/svg' import link from '../../../../../../resources/link' class ChainRequest extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.state = { allowInput: false } setTimeout(() => { @@ -12,7 +12,7 @@ class ChainRequest extends React.Component { }, 200) } - render () { + render() { const status = this.props.req.status const notice = this.props.req.notice const type = this.props.req.type @@ -31,81 +31,99 @@ class ChainRequest extends React.Component { const height = mode === 'monitor' ? '80px' : '340px' const chain = this.props.req.chain return ( -
-
+
+
{notice ? ( -
- {(_ => { +
+ {((_) => { if (status === 'pending') { return ( -
-
+
+
+
+
) } else if (status === 'success') { - return
{svg.octicon('check', { height: 80 })}
+ return
{svg.octicon('check', { height: 80 })}
} else if (status === 'error' || status === 'declined') { - return
{svg.octicon('circle-slash', { height: 80 })}
+ return
{svg.octicon('circle-slash', { height: 80 })}
} })()}
) : ( -
- {type === 'switchChain' ? ( -
-
{svg.octicon('shield', { height: 20 })}
-
Switch Chain
+
+ {type === 'switchChain' ? ( +
+
{svg.octicon('shield', { height: 20 })}
+
Switch Chain
) : ( -
-
{svg.octicon('shield', { height: 20 })}
-
Add Chain
+
+
{svg.octicon('shield', { height: 20 })}
+
Add Chain
)} -
-
+
+
{this.store('main.origins', this.props.req.origin, 'name')}
-
{type === 'switchChain' ? 'wants to switch to chain' : 'wants to add chain'}
-
{type === 'switchChain' ? ( - this.store('main.networks', chain.type, parseInt(chain.id), 'name') - ) : chain.name}
+
+ {type === 'switchChain' ? 'wants to switch to chain' : 'wants to add chain'} +
+
+ {type === 'switchChain' + ? this.store('main.networks', chain.type, parseInt(chain.id), 'name') + : chain.name} +
)}
{type === 'switchChain' ? ( -
-
{ if (this.state.allowInput) link.send('tray:switchChain', false, false, this.props.req) - }}> -
Decline
+
+
{ + if (this.state.allowInput) link.send('tray:switchChain', false, false, this.props.req) + }} + > +
Decline
-
{ if (this.state.allowInput) link.send('tray:switchChain', chain.type, parseInt(chain.id), this.props.req) - }}> -
Switch
+
{ + if (this.state.allowInput) link.send('tray:switchChain', chain.type, parseInt(chain.id), this.props.req) + }} + > +
Switch
) : ( -
-
{ if (this.state.allowInput && this.props.onTop) link.send('tray:addChain', false, this.props.req) - }}> -
Decline
+
+
{ + if (this.state.allowInput && this.props.onTop) link.send('tray:addChain', false, this.props.req) + }} + > +
Decline
-
{ if (this.state.allowInput && this.props.onTop) this.store.notify('addChain', this.props.req) - }}> -
Review
+
{ + if (this.state.allowInput && this.props.onTop) this.store.notify('addChain', this.props.req) + }} + > +
Review
)} diff --git a/app/App/Main/Account/Requests/ProviderRequest/index.js b/app/App/Main/Account/Requests/ProviderRequest/index.js index 790c1b230..4515ba9c0 100644 --- a/app/App/Main/Account/Requests/ProviderRequest/index.js +++ b/app/App/Main/Account/Requests/ProviderRequest/index.js @@ -4,7 +4,7 @@ import svg from '../../../../../../resources/svg' import link from '../../../../../../resources/link' class ProviderRequest extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.state = { allowInput: false } setTimeout(() => { @@ -12,7 +12,7 @@ class ProviderRequest extends React.Component { }, 200) } - render () { + render() { const status = this.props.req.status const notice = this.props.req.notice let requestClass = 'signerRequest' @@ -26,52 +26,48 @@ class ProviderRequest extends React.Component { if (origin.length > 36) originClass = 'requestProviderOrigin requestProviderOrigin12' return (
-
+
{notice ? ( -
+
{status === 'pending' ? ( -
+
-
+
) : status === 'success' ? ( -
- {svg.octicon('check', { height: 80 })} -
+
{svg.octicon('check', { height: 80 })}
) : status === 'error' || status === 'declined' ? ( -
- {svg.octicon('circle-slash', { height: 80 })} -
+
{svg.octicon('circle-slash', { height: 80 })}
) : null}
) : ( -
-
-
- {originName} -
-
- wants to connect -
+
+
+
{originName}
+
wants to connect
)}
-
-
{ if (this.state.allowInput) link.send('tray:giveAccess', this.props.req, false) - }}> -
Decline
+
+
{ + if (this.state.allowInput) link.send('tray:giveAccess', this.props.req, false) + }} + > +
Decline
-
{ if (this.state.allowInput) link.send('tray:giveAccess', this.props.req, true) - }}> -
Approve
+
{ + if (this.state.allowInput) link.send('tray:giveAccess', this.props.req, true) + }} + > +
Approve
diff --git a/app/App/Main/Account/Requests/SignTypedDataRequest/index.js b/app/App/Main/Account/Requests/SignTypedDataRequest/index.js index e53d2196e..4a8516a6c 100644 --- a/app/App/Main/Account/Requests/SignTypedDataRequest/index.js +++ b/app/App/Main/Account/Requests/SignTypedDataRequest/index.js @@ -6,16 +6,12 @@ import link from '../../../../../../resources/link' const SimpleJSON = ({ json }) => { return ( -
+
{Object.keys(json).map((key, o) => ( -
-
{key}:
-
- {typeof json[key] === 'object' ? ( - - ) : ( - json[key] - )} +
+
{key}:
+
+ {typeof json[key] === 'object' ? : json[key]}
))} @@ -24,7 +20,7 @@ const SimpleJSON = ({ json }) => { } class TransactionRequest extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.state = { allowInput: false, dataView: false } @@ -35,31 +31,31 @@ class TransactionRequest extends React.Component { }, props.signingDelay || 1500) } - copyAddress (e) { + copyAddress(e) { e.preventDefault() e.target.select() document.execCommand('Copy') this.setState({ copied: true }) - setTimeout(_ => this.setState({ copied: false }), 1000) + setTimeout((_) => this.setState({ copied: false }), 1000) } - approve (reqId, req) { + approve(reqId, req) { link.rpc('approveRequest', req, () => {}) // Move to link.send } - decline (reqId, req) { + decline(reqId, req) { link.rpc('declineRequest', req, () => {}) // Move to link.send } - toggleDataView (id) { + toggleDataView(id) { this.setState({ dataView: !this.state.dataView }) } - hexToDisplayValue (hex) { + hexToDisplayValue(hex) { return (Math.round(parseFloat(utils.fromWei(hex, 'ether')) * 1000000) / 1000000).toFixed(6) } - render () { + render() { const { req } = this.props const type = req.type const status = req.status @@ -74,74 +70,83 @@ class TransactionRequest extends React.Component { if (status === 'pending') requestClass += ' signerRequestPending' if (status === 'error') requestClass += ' signerRequestError' - const messageToSign = typedData.domain - ? ( -
-
-
-
Domain
- -
-
-
Message
- -
+ const messageToSign = typedData.domain ? ( +
+
+
+
Domain
+ +
+
+
Message
+
- ) - : ( -
-
-
- { +
+ ) : ( +
+
+
+ { data[elem.name] = elem.value return data - }, {}) - } /> + }, {})} + />
- ) + ) return (
{type === 'signTypedData' ? ( -
-
+
+
{notice ? ( -
- {(_ => { +
+ {((_) => { if (status === 'pending') { return ( -
-
-
See Signer
-
this.decline(this.props.req.handlerId, this.props.req)}>Cancel
+
+
+
+
+
See Signer
+
this.decline(this.props.req.handlerId, this.props.req)} + > + Cancel +
) } else if (status === 'success') { return ( -
+
{svg.octicon('check', { height: 80 })}
-
{notice}
+
{notice}
) } else if (status === 'error' || status === 'declined') { return ( -
+
{svg.octicon('circle-slash', { height: 80 })}
-
{notice}
+
{notice}
) } else { - return
{notice}
+ return ( +
+ {notice} +
+ ) } })()}
) : ( <> -
-
{originName}
+
+
{originName}
{messageToSign} @@ -149,22 +154,26 @@ class TransactionRequest extends React.Component {
) : ( -
{'Unknown: ' + this.props.req.type}
+
{'Unknown: ' + this.props.req.type}
)} -
-
{ if (this.state.allowInput) this.decline(this.props.req.handlerId, this.props.req) - }}> -
Decline
+
+
{ + if (this.state.allowInput) this.decline(this.props.req.handlerId, this.props.req) + }} + > +
Decline
-
{ if (this.state.allowInput) this.approve(this.props.req.handlerId, this.props.req) - }}> -
Sign
+
{ + if (this.state.allowInput) this.approve(this.props.req.handlerId, this.props.req) + }} + > +
Sign
diff --git a/app/App/Main/Account/Requests/SignatureRequest/index.js b/app/App/Main/Account/Requests/SignatureRequest/index.js index 27b7c6204..752556f2d 100644 --- a/app/App/Main/Account/Requests/SignatureRequest/index.js +++ b/app/App/Main/Account/Requests/SignatureRequest/index.js @@ -5,7 +5,7 @@ import { stripHexPrefix } from 'ethereumjs-util' import svg from '../../../../../../resources/svg' import link from '../../../../../../resources/link' -function decodeMessage (rawMessage) { +function decodeMessage(rawMessage) { if (isHex(rawMessage)) { const buff = Buffer.from(stripHexPrefix(rawMessage), 'hex') return buff.length === 32 ? rawMessage : buff.toString('utf8') @@ -15,7 +15,7 @@ function decodeMessage (rawMessage) { } class TransactionRequest extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.state = { allowInput: false, dataView: false } @@ -26,31 +26,31 @@ class TransactionRequest extends React.Component { }, props.signingDelay || 1500) } - copyAddress (e) { + copyAddress(e) { e.preventDefault() e.target.select() document.execCommand('Copy') this.setState({ copied: true }) - setTimeout(_ => this.setState({ copied: false }), 1000) + setTimeout((_) => this.setState({ copied: false }), 1000) } - approve (reqId, req) { + approve(reqId, req) { link.rpc('approveRequest', req, () => {}) // Move to link.send } - decline (reqId, req) { + decline(reqId, req) { link.rpc('declineRequest', req, () => {}) // Move to link.send } - toggleDataView (id) { + toggleDataView(id) { this.setState({ dataView: !this.state.dataView }) } - hexToDisplayValue (hex) { + hexToDisplayValue(hex) { return (Math.round(parseFloat(fromWei(hex, 'ether')) * 1000000) / 1000000).toFixed(6) } - render () { + render() { const type = this.props.req.type const status = this.props.req.status const notice = this.props.req.notice @@ -69,64 +69,79 @@ class TransactionRequest extends React.Component { return (
{type === 'sign' ? ( -
-
+
+
{notice ? ( -
- {(_ => { +
+ {((_) => { if (status === 'pending') { return ( -
-
-
See Signer
-
this.decline(this.props.req.handlerId, this.props.req)}>Cancel
+
+
+
+
+
See Signer
+
this.decline(this.props.req.handlerId, this.props.req)} + > + Cancel +
) } else if (status === 'success') { return ( -
+
{svg.octicon('check', { height: 80 })}
-
{notice}
+
{notice}
) } else if (status === 'error' || status === 'declined') { return ( -
+
{svg.octicon('circle-slash', { height: 80 })}
-
{notice}
+
{notice}
) } else { - return
{notice}
+ return ( +
+ {notice} +
+ ) } })()}
) : ( <> -
-
{message}
+
+
{message}
)}
) : ( -
{'Unknown: ' + this.props.req.type}
+
{'Unknown: ' + this.props.req.type}
)} -
-
{ if (this.state.allowInput) this.decline(this.props.req.handlerId, this.props.req) - }}> -
Decline
+
+
{ + if (this.state.allowInput) this.decline(this.props.req.handlerId, this.props.req) + }} + > +
Decline
-
{ if (this.state.allowInput) this.approve(this.props.req.handlerId, this.props.req) - }}> -
Sign
+
{ + if (this.state.allowInput) this.approve(this.props.req.handlerId, this.props.req) + }} + > +
Sign
diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxApproval/approvals/BasicApproval/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxApproval/approvals/BasicApproval/index.js index 8db7a651a..725231aef 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxApproval/approvals/BasicApproval/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxApproval/approvals/BasicApproval/index.js @@ -4,27 +4,24 @@ import Restore from 'react-restore' import svg from '../../../../../../../../../resources/svg' class BasicApproval extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.state = { - inPreview: false + inPreview: false, } } - render () { + render() { const { approval } = this.props return ( -
-
-
this.props.onDecline(this.props.req)} - > +
+
+
this.props.onDecline(this.props.req)}> Reject
{ this.setState({ inPreview: true }) }} @@ -38,27 +35,18 @@ class BasicApproval extends React.Component { Preview
this.props.onApprove(this.props.req, this.props.approval.type)} > Proceed
-
-
- {svg.alert(32)} -
-
- {svg.alert(32)} -
-
- {approval && approval.data && approval.data.title} -
-
-
+
+
{svg.alert(32)}
+
{svg.alert(32)}
+
{approval && approval.data && approval.data.title}
+
+
{approval && approval.data && approval.data.message}
diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxApproval/approvals/TokenSpend/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxApproval/approvals/TokenSpend/index.js index 0518b8014..d89abf302 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxApproval/approvals/TokenSpend/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxApproval/approvals/TokenSpend/index.js @@ -16,24 +16,29 @@ const digitsLookup = [ { value: 1e9, symbol: 'billion' }, { value: 1e12, symbol: 'trillion' }, { value: 1e15, symbol: 'quadrillion' }, - { value: 1e18, symbol: 'quintillion' } + { value: 1e18, symbol: 'quintillion' }, ] -function nFormat (n, digits = 2) { +function nFormat(n, digits = 2) { const num = Number(n) - const item = digitsLookup.slice().reverse().find(item => num >= item.value) + const item = digitsLookup + .slice() + .reverse() + .find((item) => num >= item.value) - return item ? { - number: (num / item.value).toFixed(digits).replace(numberRegex, '$1'), - symbol: item.symbol - } : { - number: '0', - symbol: '' - } + return item + ? { + number: (num / item.value).toFixed(digits).replace(numberRegex, '$1'), + symbol: item.symbol, + } + : { + number: '0', + symbol: '', + } } class TokenSpend extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.decimals = this.props.approval.data.decimals || 0 @@ -43,15 +48,15 @@ class TokenSpend extends React.Component { inEditApproval: false, mode: 'requested', amount: this.requestedAmount, - customInput: '' + customInput: '', } } - setAmount (amount) { + setAmount(amount) { this.setState({ amount }) } - setCustomAmount (value) { + setCustomAmount(value) { if (value === '') { this.setState({ mode: 'custom', amount: '0x0', customInput: value }) } else { @@ -64,16 +69,16 @@ class TokenSpend extends React.Component { } else { amount = '0x' + custom.integerValue().toString(16) } - + this.setState({ mode: 'custom', amount, customInput: value }) } } - startEditing () { + startEditing() { this.setState({ inEditApproval: true }) } - doneEditing () { + doneEditing() { if (this.state.mode === 'custom' && this.state.customInput === '') { this.setState({ mode: 'requested', amount: this.requestedAmount }) } @@ -84,19 +89,24 @@ class TokenSpend extends React.Component { }, 600) } - render () { + render() { const { req, approval } = this.props const { data } = approval const displayInt = new BigNumber(this.state.amount).shiftedBy(-this.decimals).integerValue() - const displayAmount = this.state.amount === MAX_HEX ? { - number: '', - symbol: 'unlimited' - } : displayInt > 9e12 ? { - number: '', - symbol: this.props.approval.data.decimals ? '~unlimited' : 'unknown' - } : nFormat(displayInt) + const displayAmount = + this.state.amount === MAX_HEX + ? { + number: '', + symbol: 'unlimited', + } + : displayInt > 9e12 + ? { + number: '', + symbol: this.props.approval.data.decimals ? '~unlimited' : 'unknown', + } + : nFormat(displayInt) const symbol = data.symbol || '???' const name = data.name || 'Unknown Token' @@ -104,22 +114,30 @@ class TokenSpend extends React.Component { const inputLock = !data.symbol || !data.name || !this.decimals return ( -
-
+
+
this.props.onDecline(req)} > Reject
{ if (this.state.inEditApproval) { this.doneEditing() @@ -128,56 +146,52 @@ class TokenSpend extends React.Component { } }} > - {this.state.inEditApproval ? 'Done' : 'Edit' } + {this.state.inEditApproval ? 'Done' : 'Edit'}
{ - this.props.onApprove( - this.props.req, - ApprovalType.TokenSpendApproval, - { amount: this.state.amount } - ) + this.props.onApprove(this.props.req, ApprovalType.TokenSpendApproval, { amount: this.state.amount }) }} > Proceed
-
-
- {svg.alert(32)} -
-
- {svg.alert(32)} -
-
{'token approval'}
+
+
{svg.alert(32)}
+
{svg.alert(32)}
+
{'token approval'}
{this.state.inEditApproval ? (
{this.state.exiting ? ( -
- {displayAmount.number ?
{displayAmount.number}
: null} - {displayAmount.symbol ?
{displayAmount.symbol}
: null} -
{data.symbol}
+
+ {displayAmount.number ? ( +
{displayAmount.number}
+ ) : null} + {displayAmount.symbol ? ( +
{displayAmount.symbol}
+ ) : null} +
{data.symbol}
) : ( -
-
- {'Token Spend Limit'} -
-
-
- {symbol} -
+
+
{'Token Spend Limit'}
+
+
{symbol}
{this.state.mode === 'custom' ? ( - { e.preventDefault() @@ -190,44 +204,60 @@ class TokenSpend extends React.Component { /> ) : (
-
{ - this.setCustomAmount(this.state.customInput) - }} + onClick={ + inputLock + ? null + : () => { + this.setCustomAmount(this.state.customInput) + } + } > -
{displayAmount.number}
-
{displayAmount.symbol}
+
{displayAmount.number}
+
{displayAmount.symbol}
)}
-
+
{ this.setState({ mode: 'requested', amount: this.requestedAmount }) }} > Requested
-
{ const amount = MAX_HEX this.setState({ mode: 'unlimited', amount }) }} > - {'Unlimited'} + {'Unlimited'}
{!inputLock ? ( -
{ this.setCustomAmount(this.state.customInput) }} @@ -240,52 +270,46 @@ class TokenSpend extends React.Component { )}
) : ( -
-
+
+
{data.spender ? ( -
-
+
+
{data.spender.substring(0, 6)} {svg.octicon('kebab-horizontal', { height: 15 })} {data.spender.substr(data.contract.length - 4)}
-
{ link.send('tray:clipboardData', data.spender) this.setState({ copyTokenRequester: true }) setTimeout(() => { this.setState({ copyTokenRequester: false }) - }, 1000) + }, 1000) }} > {this.state.copyTokenRequester ? 'ADDRESS COPIED' : data.spender}
) : null} -
- {'wants approval to spend'} -
-
-
- {symbol} -
-
{'wants approval to spend'}
+
+
{symbol}
+
{ link.send('tray:clipboardData', data.contract) this.setState({ copyTokenContract: true }) setTimeout(() => { this.setState({ copyTokenContract: false }) - }, 1000) + }, 1000) }} > {this.state.copyTokenContract ? 'ADDRESS COPIED' : data.contract}
-
- {name} -
+
{name}
)} diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxApproval/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxApproval/index.js index 6fd734213..9c1573d44 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxApproval/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxApproval/index.js @@ -7,19 +7,21 @@ import { ApprovalType } from '../../../../../../../resources/constants' import { BasicApproval, TokenSpend } from './approvals' const supportedApprovals = [ - ApprovalType.GasLimitApproval, ApprovalType.OtherChainApproval, ApprovalType.TokenSpendApproval + ApprovalType.GasLimitApproval, + ApprovalType.OtherChainApproval, + ApprovalType.TokenSpendApproval, ] class TxApproval extends React.Component { - approve (req, type, data = {}, cb = () => {}) { - link.rpc('confirmRequestApproval', req, type, data, cb) + approve(req, type, data = {}, cb = () => {}) { + link.rpc('confirmRequestApproval', req, type, data, cb) } - decline (req, cb = () => {}) { + decline(req, cb = () => {}) { link.rpc('declineRequest', req, cb) } - render () { + render() { const { req, approval, allowOtherChain } = this.props if (!supportedApprovals.includes(approval.type)) { @@ -27,37 +29,17 @@ class TxApproval extends React.Component { } if (approval.type === ApprovalType.GasLimitApproval) { - return ( - - ) + return } if (approval.type === ApprovalType.OtherChainApproval) { - if (!allowOtherChain || typeof allowOtherChain !== 'function') throw new Error('OtherChainApproval needs allowOtherChain') - return ( - - ) + if (!allowOtherChain || typeof allowOtherChain !== 'function') + throw new Error('OtherChainApproval needs allowOtherChain') + return } if (approval.type === ApprovalType.TokenSpendApproval) { - return ( - - ) + return } } } diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxBar/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxBar/index.js index 071bba05f..aab421e4a 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxBar/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxBar/index.js @@ -3,7 +3,7 @@ import Restore from 'react-restore' import svg from '../../../../../../../resources/svg' class TxBar extends React.Component { - render () { + render() { const req = this.props.req let position = 0 let txBarClass = 'txBar' @@ -26,34 +26,46 @@ class TxBar extends React.Component { return (
-
-
-
-
-
-
{svg.sign(22)}
-
-
1 ? 'txProgressStepCenter txProgressStepCenterOn' : 'txProgressStepCenter'} /> +
+
+
+
+
+
+ {svg.sign(22)} +
+
+
1 ? 'txProgressStepCenter txProgressStepCenterOn' : 'txProgressStepCenter'} + />
-
-
{svg.send(15)}
-
-
2 ? 'txProgressStepCenter txProgressStepCenterOn' : 'txProgressStepCenter'} /> +
+
+ {svg.send(15)} +
+
+
2 ? 'txProgressStepCenter txProgressStepCenterOn' : 'txProgressStepCenter'} + />
-
-
{svg.octicon('check', { height: 24 })}
-
-
3 ? 'txProgressStepCenter txProgressStepCenterOn' : 'txProgressStepCenter'} /> +
+
+ {svg.octicon('check', { height: 24 })} +
+
+
3 ? 'txProgressStepCenter txProgressStepCenterOn' : 'txProgressStepCenter'} + />
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxData/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxData/index.js index eaa98bb42..75826892c 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxData/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxData/index.js @@ -4,50 +4,57 @@ import link from '../../../../../../../resources/link' import svg from '../../../../../../../resources/svg' class txData extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.state = { - copied: false + copied: false, } } - copyAddress (data) { + copyAddress(data) { link.send('tray:clipboardData', data) this.setState({ copied: true }) - setTimeout(_ => this.setState({ copied: false }), 1000) + setTimeout((_) => this.setState({ copied: false }), 1000) } - render () { + render() { const req = this.props.req return ( -
-
-
{ - this.props.overlayMode('data') - }}> - {req.data.data && req.data.data !== '0x' && req.data.data !== '0x0' ? ( +
+
+
{ + this.props.overlayMode('data') + }} + > + {req.data.data && req.data.data !== '0x' && req.data.data !== '0x0' ? ( req.decodedData && req.decodedData.method ? ( <> {'Sending Data: '} - {(() => { - if (req.decodedData.method.length > 17) return `${req.decodedData.method.substr(0, 15)}..` - return req.decodedData.method - })()} + + {(() => { + if (req.decodedData.method.length > 17) return `${req.decodedData.method.substr(0, 15)}..` + return req.decodedData.method + })()} + - ) : ( + ) : ( {'Sending Data!'} ) - ) : 'No Data'} -
-
- Data + ) : ( + 'No Data' + )}
+
Data
) } } -{/*
+{ + /*
{this.state.copied ? {'Copied'}{svg.octicon('clippy', { height: 14 })} : req.data.to} -
*/} +
*/ +} export default Restore.connect(txData) diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxFeeNew/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxFeeNew/index.js index afefd7cee..45f55dd7d 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxFeeNew/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxFeeNew/index.js @@ -7,23 +7,23 @@ import { usesBaseFee } from '../../../../../../../resources/domain/transaction' const FEE_WARNING_THRESHOLD_USD = 50 class TxFee extends React.Component { - constructor (props, context) { + constructor(props, context) { super(props, context) - this.chain = { - type: 'ethereum', - id: parseInt(props.req.data.chainId, 'hex') + this.chain = { + type: 'ethereum', + id: parseInt(props.req.data.chainId, 'hex'), } } - toDisplayUSD (bn) { + toDisplayUSD(bn) { return bn.toFixed(2, BigNumber.ROUND_UP).toString() } - toDisplayEther (bn) { + toDisplayEther(bn) { return parseFloat(bn.shiftedBy(-18).toFixed(6).toString()) } - toDisplayGwei (bn) { + toDisplayGwei(bn) { return parseFloat(bn.shiftedBy(-9).toFixed(3).toString()) } - render () { + render() { const req = this.props.req const layer = this.store('main.networks', this.chain.type, this.chain.id, 'layer') @@ -55,56 +55,51 @@ class TxFee extends React.Component { const minFeeUSD = minFee.shiftedBy(-18).multipliedBy(nativeUSD) const currentSymbol = this.store('main.networks', this.props.chain.type, this.props.chain.id, 'symbol') || '?' - + return ( -
-
-
-
{ - this.props.overlayMode('fee') - }}> - {this.toDisplayGwei(maxFeePerGas)} - Gwei +
+
+
+
{ + this.props.overlayMode('fee') + }} + > + {this.toDisplayGwei(maxFeePerGas)} + Gwei
{this.toDisplayUSD(maxFeeUSD) === '0.00' ? ( -
-
- - {currentSymbol || '?'} - - - {this.toDisplayEther(maxFee)} - -
+
+
+ {currentSymbol || '?'} + {this.toDisplayEther(maxFee)} +
) : ( -
-
FEE_WARNING_THRESHOLD_USD || this.toDisplayUSD(maxFeeUSD) === '0.00' ? '_txFeeValueDefault _txFeeValueDefaultWarn' : '_txFeeValueDefault'}> - - ≈ - - - $ - - +
+
FEE_WARNING_THRESHOLD_USD || this.toDisplayUSD(maxFeeUSD) === '0.00' + ? '_txFeeValueDefault _txFeeValueDefaultWarn' + : '_txFeeValueDefault' + } + > + + $ + {`${this.toDisplayUSD(minFeeUSD)} - ${this.toDisplayUSD(maxFeeUSD)}`} - - {`in ${currentSymbol || '?'}`} - + {`in ${currentSymbol || '?'}`} +
+
+ {currentSymbol || '?'} + {this.toDisplayEther(maxFee)}
-
- - {currentSymbol || '?'} - - - {this.toDisplayEther(maxFee)} - -
)}
-
Fee
+
Fee
) diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxMain/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxMain/index.js index b21f7d39e..e3961731b 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxMain/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxMain/index.js @@ -5,21 +5,21 @@ import svg from '../../../../../../../resources/svg' import utils from 'web3-utils' class TxRecipient extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.state = { - copied: false + copied: false, } } - copyAddress (data) { + copyAddress(data) { link.send('tray:clipboardData', data) this.setState({ copied: true }) - setTimeout(_ => this.setState({ copied: false }), 1000) + setTimeout((_) => this.setState({ copied: false }), 1000) } - hexToDisplayValue (hex) { + hexToDisplayValue(hex) { return (Math.round(parseFloat(utils.fromWei(hex, 'ether')) * 1000000) / 1000000).toFixed(6) } - render () { + render() { const req = this.props.req const layer = this.store('main.networks', this.props.chain.type, this.props.chain.id, 'layer') const nativeCurrency = this.store('main.networksMeta', this.props.chain.type, this.props.chain.id, 'nativeCurrency') @@ -27,30 +27,30 @@ class TxRecipient extends React.Component { const value = this.hexToDisplayValue(req.data.value || '0x') const currentSymbol = this.store('main.networks', this.props.chain.type, this.props.chain.id, 'symbol') || '?' return ( -
-
-
-
- {currentSymbol} - {value} +
+
+
+
+ {currentSymbol} + {value}
-
- {'≈'} - {'$'} - {(value * etherUSD).toFixed(2)} +
+ {'≈'} + {'$'} + {(value * etherUSD).toFixed(2)}
-
- Sending -
+
Sending
) } } -{/*
+{ + /*
{this.state.copied ? {'Copied'}{svg.octicon('clippy', { height: 14 })} : req.data.to} -
*/} +
*/ +} export default Restore.connect(TxRecipient) diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/TxDataOverlay/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/TxDataOverlay/index.js index 78ccf6310..6647cf710 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/TxDataOverlay/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/TxDataOverlay/index.js @@ -6,76 +6,78 @@ import link from '../../../../../../../../resources/link' //
//
- //
{svg.octicon('issue-opened', { height: 26 })}
- //
View Data
- //
this.copyData(req.data.data)}> - // {svg.octicon('clippy', { height: 20 })} - //
-//
+//
{svg.octicon('issue-opened', { height: 26 })}
+//
View Data
+//
this.copyData(req.data.data)}> +// {svg.octicon('clippy', { height: 20 })} +//
+//
//
class TxDataOverlay extends React.Component { - constructor (props, context) { + constructor(props, context) { super(props, context) this.state = { - copiedData: false + copiedData: false, } } - copyData (data) { + copyData(data) { if (data) { link.send('tray:clipboardData', data) this.setState({ copiedData: true }) - setTimeout(_ => this.setState({ copiedData: false }), 1000) + setTimeout((_) => this.setState({ copiedData: false }), 1000) } } - render () { + render() { const { req, overlayMode } = this.props return ( -
-
Transaction Data
-
overlayMode()}>{svg.octicon('x', { height: 16 })}
-
+
+
Transaction Data
+
overlayMode()}> + {svg.octicon('x', { height: 16 })} +
+
{utils.toAscii(req.data.data || '0x') ? ( -
+
{req.decodedData ? ( -
-
Contract Method
-
unverified abi
-
{'abi source: ' + req.decodedData.source}
-
-
{svg.sync(16)}
-
{svg.sync(16)}
-
- {req.decodedData.contractName} -
-
+
+
Contract Method
+
unverified abi
+
{'abi source: ' + req.decodedData.source}
+
+
{svg.sync(16)}
+
{svg.sync(16)}
+
{req.decodedData.contractName}
+
{req.decodedData.method}
-
Inputs
- {req.decodedData.args.map(a => { +
Inputs
+ {req.decodedData.args.map((a) => { return ( -
-
+
+
{a.type.indexOf('[]') ? ( - a.value.split(',').map(i =>
{i}
) + a.value.split(',').map((i) =>
{i}
) ) : (
{a.value}
)}
-
{a.name + ' (' + a.type + ')'}
+
{a.name + ' (' + a.type + ')'}
) })}
- ) : 'Could not decode data..'} -
-
{'Raw Transaction Data'}
-
this.copyData(req.data.data)}> + ) : ( + 'Could not decode data..' + )} +
+
{'Raw Transaction Data'}
+
this.copyData(req.data.data)}> {this.state.copiedData ? ( -
+
Copied Data
{svg.octicon('clippy', { height: 20 })}
@@ -85,8 +87,11 @@ class TxDataOverlay extends React.Component {
) : ( -
-
+
+
No Data
@@ -97,4 +102,4 @@ class TxDataOverlay extends React.Component { } } -export default Restore.connect(TxDataOverlay) \ No newline at end of file +export default Restore.connect(TxDataOverlay) diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/TxFeeOverlay/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/TxFeeOverlay/index.js index 94f2632dc..58f050a27 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/TxFeeOverlay/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/TxFeeOverlay/index.js @@ -8,7 +8,7 @@ import { usesBaseFee } from '../../../../../../../../resources/domain/transactio import BigNumber from 'bignumber.js' -function maxFee (tx = { chainId: '' }) { +function maxFee(tx = { chainId: '' }) { const chainId = parseInt(tx.chainId) // for ETH-based chains, the max fee should be 2 ETH @@ -27,22 +27,22 @@ function maxFee (tx = { chainId: '' }) { //
//
- //
{svg.octicon('issue-opened', { height: 26 })}
- //
View Data
- //
this.copyData(req.data.data)}> - // {svg.octicon('clippy', { height: 20 })} - //
-//
+//
{svg.octicon('issue-opened', { height: 26 })}
+//
View Data
+//
this.copyData(req.data.data)}> +// {svg.octicon('clippy', { height: 20 })} +//
+//
//
class TxFeeOverlay extends React.Component { - constructor (props, context) { + constructor(props, context) { super(props, context) this.moduleRef = React.createRef() this.state = { - copiedData: false + copiedData: false, } if (usesBaseFee(props.req.data)) { @@ -61,45 +61,45 @@ class TxFeeOverlay extends React.Component { this.state.gasLimit = BigNumber(props.req.data.gasLimit, 16).toString() } - mouseDetect (e) { + mouseDetect(e) { if (this.moduleRef && this.moduleRef.current && !this.moduleRef.current.contains(e.target)) { this.props.overlayMode() } } - componentDidMount () { + componentDidMount() { document.addEventListener('mousedown', this.mouseDetect.bind(this)) } - componentWillUnmount () { + componentWillUnmount() { document.removeEventListener('mousedown', this.mouseDetect.bind(this)) } - copyData (data) { + copyData(data) { if (data) { link.send('tray:clipboardData', data) this.setState({ copiedData: true }) - setTimeout(_ => this.setState({ copiedData: false }), 1000) + setTimeout((_) => this.setState({ copiedData: false }), 1000) } } - toDisplayEther (bn) { + toDisplayEther(bn) { return parseFloat(bn.shiftedBy(-18).toFixed(6).toString()) } - toDisplayFromWei (bn) { - return bn.shiftedBy(-9).toFixed(9).toString().replace(/0+$/,'').replace(/\.+$/,'') + toDisplayFromWei(bn) { + return bn.shiftedBy(-9).toFixed(9).toString().replace(/0+$/, '').replace(/\.+$/, '') } - toDisplayFromGwei (bn) { - return bn.toFixed(9).toString().replace(/0+$/,'').replace(/\.+$/,'') + toDisplayFromGwei(bn) { + return bn.toFixed(9).toString().replace(/0+$/, '').replace(/\.+$/, '') } - trimGwei (gwei) { + trimGwei(gwei) { return parseFloat(parseFloat(gwei).toFixed(3)).toString() } - setBaseFee (baseFee) { + setBaseFee(baseFee) { this.setState({ baseFee }) clearTimeout(this.baseFeeSubmitTimeout) this.baseFeeSubmitTimeout = setTimeout(() => { @@ -109,18 +109,18 @@ class TxFeeOverlay extends React.Component { const priorityFee = parseFloat(this.state.priorityFee) const gasLimit = parseInt(this.state.gasLimit) const maxTotalFee = maxFee(this.props.req.data) - + if (gweiToWei(baseFee + priorityFee) * gasLimit > maxTotalFee) { baseFee = Math.floor(maxTotalFee / gasLimit / 1e9) - priorityFee } - link.rpc('setBaseFee', gweiToWeiHex(baseFee), this.props.req.handlerId, e => { + link.rpc('setBaseFee', gweiToWeiHex(baseFee), this.props.req.handlerId, (e) => { if (e) console.error(e) }) this.setState({ baseFee: this.toDisplayFromGwei(BigNumber(baseFee)) }) }, 500) } - setPriorityFee (priorityFee) { + setPriorityFee(priorityFee) { this.setState({ priorityFee }) clearTimeout(this.priorityFeeSubmitTimeout) this.priorityFeeSubmitTimeout = setTimeout(() => { @@ -134,16 +134,18 @@ class TxFeeOverlay extends React.Component { if (gweiToWei(baseFee + priorityFee) * gasLimit > maxTotalFee) { priorityFee = Math.floor(maxTotalFee / gasLimit / 1e9) - baseFee } - link.rpc('setPriorityFee', gweiToWeiHex(priorityFee), this.props.req.handlerId, e => { + link.rpc('setPriorityFee', gweiToWeiHex(priorityFee), this.props.req.handlerId, (e) => { if (e) console.error(e) }) - if (this.toDisplayFromGwei(BigNumber(priorityFee)) !== this.toDisplayFromGwei(BigNumber(this.state.priorityFee))) { + if ( + this.toDisplayFromGwei(BigNumber(priorityFee)) !== this.toDisplayFromGwei(BigNumber(this.state.priorityFee)) + ) { this.setState({ priorityFee: this.toDisplayFromGwei(BigNumber(priorityFee)) }) } }, 500) } - setGasPrice (gasPrice) { + setGasPrice(gasPrice) { this.setState({ gasPrice }) clearTimeout(this.gasPriceSubmitTimeout) this.gasPriceSubmitTimeout = setTimeout(() => { @@ -156,14 +158,14 @@ class TxFeeOverlay extends React.Component { if (gweiToWei(gasPrice) * gasLimit > maxTotalFee) { gasPrice = Math.floor(maxTotalFee / gasLimit / 1e9) } - link.rpc('setGasPrice', gweiToWeiHex(gasPrice), this.props.req.handlerId, e => { + link.rpc('setGasPrice', gweiToWeiHex(gasPrice), this.props.req.handlerId, (e) => { if (e) console.error(e) }) this.setState({ gasPrice: this.toDisplayFromGwei(BigNumber(gasPrice)) }) }, 500) } - setGasLimit (gasLimit) { + setGasLimit(gasLimit) { this.setState({ gasLimit }) clearTimeout(this.gasLimitSubmitTimeout) this.gasLimitSubmitTimeout = setTimeout(() => { @@ -186,28 +188,28 @@ class TxFeeOverlay extends React.Component { gasLimit = Math.floor(maxTotalFee / gweiToWei(gasPrice)) } } - link.rpc('setGasLimit', '0x' + gasLimit.toString(16), this.props.req.handlerId, e => { + link.rpc('setGasLimit', '0x' + gasLimit.toString(16), this.props.req.handlerId, (e) => { if (e) console.error(e) }) this.setState({ gasLimit: gasLimit.toString() }) }, 500) } - limitRange (num, min, max) { + limitRange(num, min, max) { if (num > max) return max if (num < min) return min return num } - renderBaseFeeInput () { + renderBaseFeeInput() { return ( -
-
+
+
{ - this.setBaseFee(e.target.value.match('[0-9\.\-]*').toString()) + this.setBaseFee(e.target.value.match('[0-9.-]*').toString()) }} onKeyDown={(e) => { if (e.key === 'Enter') { @@ -231,20 +233,20 @@ class TxFeeOverlay extends React.Component { }} />
-
Base Fee (GWEI)
+
Base Fee (GWEI)
) } - renderPriorityFeeInput () { + renderPriorityFeeInput() { return ( -
-
- +
+ { - this.setPriorityFee(e.target.value.match('[0-9\.\-]*')) + this.setPriorityFee(e.target.value.match('[0-9.-]*')) }} onKeyDown={(e) => { if (e.key === 'Enter') { @@ -268,20 +270,20 @@ class TxFeeOverlay extends React.Component { }} />
-
Max Priority Fee (GWEI)
+
Max Priority Fee (GWEI)
) } - renderGasPriceInput () { + renderGasPriceInput() { return ( -
-
+
+
{ - this.setGasPrice(e.target.value.match('[0-9\.\-]*').toString()) + this.setGasPrice(e.target.value.match('[0-9.-]*').toString()) }} onKeyDown={(e) => { if (e.key === 'Enter') { @@ -305,19 +307,19 @@ class TxFeeOverlay extends React.Component { }} />
-
Gas Price (GWEI)
+
Gas Price (GWEI)
) } - renderGasLimitInput () { + renderGasLimitInput() { return ( -
-
- +
+ { this.setGasLimit(e.target.value.match('[0-9]*')) }} @@ -339,12 +341,12 @@ class TxFeeOverlay extends React.Component { }} />
-
Gas Limit (UNITS)
+
Gas Limit (UNITS)
) } - render () { + render() { const { req, overlayMode } = this.props if (usesBaseFee(req.data)) { // const baseFee = BigNumber(this.state.maxFeePerGas, 16) @@ -354,12 +356,14 @@ class TxFeeOverlay extends React.Component { // maxFee = maxFeePerGas.multipliedBy(gasLimit) // maxFeeUSD = maxFee.multipliedBy(nativeUSD) return ( -
-
Adjust Fee
-
overlayMode()}>{svg.octicon('x', { height: 16 })}
-
-
-
+
+
Adjust Fee
+
overlayMode()}> + {svg.octicon('x', { height: 16 })} +
+
+
+
{this.renderBaseFeeInput()} {this.renderPriorityFeeInput()} {this.renderGasLimitInput()} @@ -373,12 +377,14 @@ class TxFeeOverlay extends React.Component { // maxFee = maxFeePerGas.multipliedBy(gasLimit) // maxFeeUSD = maxFee.shiftedBy(-18).multipliedBy(nativeUSD) return ( -
-
Adjust Fee
-
overlayMode()}>{svg.octicon('x', { height: 16 })}
-
-
-
+
+
Adjust Fee
+
overlayMode()}> + {svg.octicon('x', { height: 16 })} +
+
+
+
{this.renderGasPriceInput()} {this.renderGasLimitInput()}
diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/index.js index 0415a41a2..3eeee22ce 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxOverlay/index.js @@ -8,15 +8,14 @@ import TxDataOverlay from './TxDataOverlay' import TxFeeOverlay from './TxFeeOverlay' class TxModule extends React.Component { - constructor (props, context) { + constructor(props, context) { super(props, context) this.moduleRef = React.createRef() this.state = { - active: false + active: false, } } - // setActive (active) { // if (!this.props.req || !this.props.req.data || !this.props.req.data.data) return // this.setState({ active }) @@ -32,8 +31,7 @@ class TxModule extends React.Component { // } // } - - render () { + render() { const { overlay } = this.props if (overlay === 'fee') { return diff --git a/app/App/Main/Account/Requests/TransactionRequest/TxRecipient/index.js b/app/App/Main/Account/Requests/TransactionRequest/TxRecipient/index.js index dff7327f1..69fd3048f 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/TxRecipient/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/TxRecipient/index.js @@ -6,59 +6,68 @@ import link from '../../../../../../../resources/link' import svg from '../../../../../../../resources/svg' class TxRecipient extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.state = { - copied: false + copied: false, } } - copyAddress (data) { + copyAddress(data) { link.send('tray:clipboardData', data) this.setState({ copied: true }) - setTimeout(_ => this.setState({ copied: false }), 1000) + setTimeout((_) => this.setState({ copied: false }), 1000) } - render () { + render() { const req = this.props.req const address = req.data.to ? getAddress(req.data.to) : '' - const ensName = (req.recipient && req.recipient.length < 25) ? req.recipient : '' + const ensName = req.recipient && req.recipient.length < 25 ? req.recipient : '' return ( -
-
+
+
{address ? ( -
- {ensName - ? {ensName} - : {address.substring(0, 6)}{svg.octicon('kebab-horizontal', { height: 15 })}{address.substring(address.length - 4)} - } - {req.decodedData && req.decodedData.contractName ? ( - {(() => { - if (req.decodedData.contractName.length > 11) return `${req.decodedData.contractName.substr(0, 9)}..` - return req.decodedData.contractName - })()} +
+ {ensName ? ( + {ensName} + ) : ( + + {address.substring(0, 6)} + {svg.octicon('kebab-horizontal', { height: 15 })} + {address.substring(address.length - 4)} + + )} + {req.decodedData && req.decodedData.contractName ? ( + + {(() => { + if (req.decodedData.contractName.length > 11) + return `${req.decodedData.contractName.substr(0, 9)}..` + return req.decodedData.contractName + })()} + ) : null} -
{ - this.copyAddress(address) - }}> +
{ + this.copyAddress(address) + }} + > {this.state.copied ? 'Address Copied' : address}
) : ( -
- Deploying Contract -
+
Deploying Contract
)} -
- Recipient -
+
Recipient
) } } -{/*
+{ + /*
{this.state.copied ? {'Copied'}{svg.octicon('clippy', { height: 14 })} : req.data.to} -
*/} +
*/ +} export default Restore.connect(TxRecipient) diff --git a/app/App/Main/Account/Requests/TransactionRequest/index.js b/app/App/Main/Account/Requests/TransactionRequest/index.js index 4bb4646d4..6166f8a35 100644 --- a/app/App/Main/Account/Requests/TransactionRequest/index.js +++ b/app/App/Main/Account/Requests/TransactionRequest/index.js @@ -25,17 +25,17 @@ import TxApproval from './TxApproval' const FEE_WARNING_THRESHOLD_USD = 50 class Time extends React.Component { - constructor (...args) { + constructor(...args) { super(...args) this.state = { - time: Date.now() + time: Date.now(), } setInterval(() => { this.setState({ time: Date.now() }) }, 1000) } - msToTime (duration) { + msToTime(duration) { const seconds = Math.floor((duration / 1000) % 60) const minutes = Math.floor((duration / (1000 * 60)) % 60) const hours = Math.floor((duration / (1000 * 60 * 60)) % 24) @@ -53,27 +53,23 @@ class Time extends React.Component { return { time, label } } - render () { + render() { const { time, label } = this.msToTime(this.state.time - this.props.time) return ( -
-
- {time} -
-
- {label} -
+
+
{time}
+
{label}
) } } class TransactionRequest extends React.Component { - constructor (props, context) { + constructor(props, context) { super(props, context) - this.chain = { - type: 'ethereum', - id: parseInt(props.req.data.chainId, 'hex') + this.chain = { + type: 'ethereum', + id: parseInt(props.req.data.chainId, 'hex'), } this.state = { allowInput: false, dataView: false } @@ -82,29 +78,29 @@ class TransactionRequest extends React.Component { }, props.signingDelay || 1500) } - copyAddress (data) { + copyAddress(data) { link.send('tray:clipboardData', data) this.setState({ copied: true }) - setTimeout(_ => this.setState({ copied: false }), 1000) + setTimeout((_) => this.setState({ copied: false }), 1000) } - approve (reqId, req) { + approve(reqId, req) { link.rpc('approveRequest', req, () => {}) // Move to link.send } - decline (req) { + decline(req) { link.rpc('declineRequest', req, () => {}) // Move to link.send } - toggleDataView (id) { + toggleDataView(id) { this.setState({ dataView: !this.state.dataView }) } - hexToDisplayValue (hex) { + hexToDisplayValue(hex) { return (Math.round(parseFloat(utils.fromWei(hex, 'ether')) * 1000000) / 1000000).toFixed(6) } - txSectionStyle (index, height) { + txSectionStyle(index, height) { if (this.state.selectedIndex === index) { return { transform: `translateY(${0}px)`, @@ -114,35 +110,35 @@ class TransactionRequest extends React.Component { background: 'rgba(237, 242, 253, 1)', left: '10px', right: '10px', - padding: '0px 30px' + padding: '0px 30px', } } else { return { - transform: `translateY(${(index * -40) - 60}px)`, - zIndex: 1 + transform: `translateY(${index * -40 - 60}px)`, + zIndex: 1, } } } - copyData (data) { + copyData(data) { link.send('tray:clipboardData', data) this.setState({ copiedData: true }) - setTimeout(_ => this.setState({ copiedData: false }), 1000) + setTimeout((_) => this.setState({ copiedData: false }), 1000) } - overlayMode (mode) { + overlayMode(mode) { this.setState({ overlayMode: mode }) } - toDisplayUSD (bn) { + toDisplayUSD(bn) { return bn.toFixed(2, BigNumber.ROUND_UP).toString() } - allowOtherChain () { + allowOtherChain() { this.setState({ allowOtherChain: true }) } - render () { + render() { const { accountId, handlerId } = this.props const req = this.store('main.accounts', accountId, 'requests', handlerId) const originalNotice = (req.notice || '').toLowerCase() @@ -153,7 +149,7 @@ class TransactionRequest extends React.Component { const toAddress = req.data && req.data.to ? getAddress(req.data.to) : '' let requestClass = 'signerRequest' if (mode === 'monitor') requestClass += ' signerRequestMonitor' - const success = (req.status === 'confirming' || req.status === 'confirmed') + const success = req.status === 'confirming' || req.status === 'confirmed' const error = req.status === 'error' || req.status === 'declined' if (success) requestClass += ' signerRequestSuccess' if (req.status === 'confirmed') requestClass += ' signerRequestConfirmed' @@ -197,10 +193,10 @@ class TransactionRequest extends React.Component { // } if (mode !== 'monitor' && req.data.nonce) { const r = this.store('main.accounts', this.props.accountId, 'requests') - const requests = Object.keys(r || {}).map(key => r[key]) - const monitor = requests.filter(req => req.mode === 'monitor') - const monitorFilter = monitor.filter(r => r.status !== 'error') - const existingNonces = monitorFilter.map(m => m.data.nonce) + const requests = Object.keys(r || {}).map((key) => r[key]) + const monitor = requests.filter((req) => req.mode === 'monitor') + const monitorFilter = monitor.filter((r) => r.status !== 'error') + const existingNonces = monitorFilter.map((m) => m.data.nonce) existingNonces.forEach((nonce, i) => { if (req.data.nonce === nonce) { txMeta.replacement = true @@ -214,11 +210,13 @@ class TransactionRequest extends React.Component { txMeta.possible = false txMeta.notice = 'gas price too low' } else if ( - req.data.maxPriorityFeePerGas && - req.data.maxFeePerGas && - Math.ceil(parseInt(monitorFilter[i].data.maxPriorityFeePerGas, 'hex') * 1.1) > parseInt(req.data.maxPriorityFeePerGas, 'hex') && - Math.ceil(parseInt(monitorFilter[i].data.maxFeePerGas, 'hex') * 1.1) > parseInt(req.data.maxFeePerGas, 'hex') - ) { + req.data.maxPriorityFeePerGas && + req.data.maxFeePerGas && + Math.ceil(parseInt(monitorFilter[i].data.maxPriorityFeePerGas, 'hex') * 1.1) > + parseInt(req.data.maxPriorityFeePerGas, 'hex') && + Math.ceil(parseInt(monitorFilter[i].data.maxFeePerGas, 'hex') * 1.1) > + parseInt(req.data.maxFeePerGas, 'hex') + ) { txMeta.possible = false txMeta.notice = 'gas fees too low' } @@ -246,31 +244,30 @@ class TransactionRequest extends React.Component { } const hexId = '0x' + parseInt(this.chain.id).toString('16') - const chainName = this.store('main.networks.ethereum', this.chain.id, 'name') + const chainName = this.store('main.networks.ethereum', this.chain.id, 'name') const showWarning = !status && mode !== 'monitor' - const requiredApproval = showWarning && (req.approvals || []).filter(a => !a.approved)[0] + const requiredApproval = showWarning && (req.approvals || []).filter((a) => !a.approved)[0] return (
- + {req.type === 'transaction' ? ( -
+
{!!requiredApproval ? ( + allowOtherChain={this.allowOtherChain.bind(this)} + /> ) : null} -
+
{notice ? ( -
-
+
+
{!error ? (
{this.state.txHashCopied ? ( -
- Transaction Hash Copied -
+
Transaction Hash Copied
) : this.state.viewDetailsHover ? (
{ clearTimeout(this.viewDetailsHoverTimer) this.setState({ viewDetailsHover: true }) @@ -329,10 +328,16 @@ class TransactionRequest extends React.Component { > View Details
-
link.send('tray:replaceTx', req.handlerId, 'cancel')}> +
link.send('tray:replaceTx', req.handlerId, 'cancel')} + > Cancel
-
link.send('tray:replaceTx', req.handlerId, 'speed')}> +
link.send('tray:replaceTx', req.handlerId, 'speed')} + > Speed Up
@@ -347,20 +352,16 @@ class TransactionRequest extends React.Component {
{req && req.tx && req.tx.receipt ? ( <> -
-
- In Block -
-
+
+
In Block
+
{parseInt(req.tx.receipt.blockNumber, 'hex')}