{ "name": "metamask-crx", "version": "10.21.1", "private": true, "repository": { "type": "git", "url": "https://github.com/MetaMask/metamask-extension.git" }, "scripts": { "setup": "yarn install && yarn setup:postinstall", "setup:postinstall": "yarn patch-package && yarn allow-scripts", "start": "yarn build:dev dev --apply-lavamoat=false", "start:lavamoat": "yarn build:dev dev --apply-lavamoat=true", "start:mv3": "ENABLE_MV3=true yarn build:dev dev --apply-lavamoat=false", "dist": "yarn build dist", "build": "yarn lavamoat:build", "build:dev": "node development/build/index.js", "start:test": "SEGMENT_HOST='https://api.segment.io' SEGMENT_WRITE_KEY='FAKE' SENTRY_DSN_DEV=https://fake@sentry.io/0000000 PORTFOLIO_URL=http://127.0.0.1:8080 yarn build testDev", "benchmark:chrome": "SELENIUM_BROWSER=chrome node test/e2e/benchmark.js", "mv3:stats:chrome": "SELENIUM_BROWSER=chrome ENABLE_MV3=true node test/e2e/mv3-perf-stats/index.js", "user-actions-benchmark:chrome": "SELENIUM_BROWSER=chrome node test/e2e/user-actions-benchmark.js", "benchmark:firefox": "SELENIUM_BROWSER=firefox node test/e2e/benchmark.js", "build:test": "SEGMENT_HOST='https://api.segment.io' SEGMENT_WRITE_KEY='FAKE' SENTRY_DSN_DEV=https://fake@sentry.io/0000000 PORTFOLIO_URL=http://127.0.0.1:8080 yarn build test", "build:test:flask": "yarn build test --build-type flask", "build:test:mv3": "ENABLE_MV3=true SEGMENT_HOST='https://api.segment.io' SEGMENT_WRITE_KEY='FAKE' SENTRY_DSN_DEV=https://fake@sentry.io/0000000 PORTFOLIO_URL=http://127.0.0.1:8080 yarn build test", "test": "yarn lint && yarn test:unit && yarn test:unit:jest", "dapp": "node development/static-server.js node_modules/@metamask/test-dapp/dist --port 8080", "dapp-chain": "GANACHE_ARGS='-b 2' concurrently -k -n ganache,dapp -p '[{time}][{name}]' 'yarn ganache:start' 'sleep 5 && yarn dapp'", "forwarder": "node ./development/static-server.js ./node_modules/@metamask/forwarder/dist/ --port 9010", "dapp-forwarder": "concurrently -k -n forwarder,dapp -p '[{time}][{name}]' 'yarn forwarder' 'yarn dapp'", "test:unit": "./test/test-unit-combined.sh", "test:unit:jest": "./test/test-unit-jest.sh", "test:unit:global": "mocha test/unit-global/*.test.js", "test:unit:mocha": "mocha './app/**/*.test.js'", "test:e2e:chrome": "SELENIUM_BROWSER=chrome node test/e2e/run-all.js", "test:e2e:chrome:snaps": "SELENIUM_BROWSER=chrome node test/e2e/run-all.js --snaps", "test:e2e:firefox": "SELENIUM_BROWSER=firefox node test/e2e/run-all.js", "test:e2e:firefox:snaps": "SELENIUM_BROWSER=firefox node test/e2e/run-all.js --snaps", "test:e2e:single": "node test/e2e/run-e2e-test.js", "test:coverage:mocha": "nyc --reporter=text --reporter=html yarn test:unit:mocha", "test:coverage:jest": "yarn test:unit:jest --coverage --maxWorkers=2 && yarn jest-it-up -m 5", "ganache:start": "./development/run-ganache.sh", "sentry:publish": "node ./development/sentry-publish.js", "lint": "yarn lint:prettier && yarn lint:eslint && yarn lint:tsc && yarn lint:styles", "lint:fix": "yarn lint:prettier:fix && yarn lint:eslint:fix && yarn lint:styles:fix", "lint:prettier": "prettier '**/*.json' --check", "lint:prettier:fix": "prettier '**/*.json' --write", "lint:changed": "{ git ls-files --others --exclude-standard ; git diff-index --name-only --diff-filter=d HEAD ; } | grep --regexp='[.]js$' | tr '\\n' '\\0' | xargs -0 eslint", "lint:changed:fix": "{ git ls-files --others --exclude-standard ; git diff-index --name-only --diff-filter=d HEAD ; } | grep --regexp='[.]js$' | tr '\\n' '\\0' | xargs -0 eslint --fix", "lint:changelog": "auto-changelog validate", "lint:changelog:rc": "auto-changelog validate --rc", "lint:eslint": "eslint . --ext js,ts,tsx,snap --cache", "lint:eslint:fix": "yarn lint:eslint --fix", "lint:lockfile": "lockfile-lint --path yarn.lock --allowed-hosts npm yarn github.com codeload.github.com --empty-hostname false --allowed-schemes \"https:\" \"git+https:\"", "lint:shellcheck": "./development/shellcheck.sh", "lint:styles": "stylelint '*/**/*.scss'", "lint:styles:fix": "yarn lint:styles --fix", "lint:tsc": "tsc --project tsconfig.json --noEmit", "validate-source-maps": "node ./development/sourcemap-validator.js", "verify-locales": "node ./development/verify-locale-strings.js", "verify-locales:fix": "node ./development/verify-locale-strings.js --fix", "mozilla-lint": "addons-linter dist/firefox", "devtools:react": "react-devtools", "devtools:redux": "remotedev --hostname=localhost --port=8000", "start:dev": "concurrently -k -n build,react,redux yarn:start yarn:devtools:react yarn:devtools:redux", "announce": "node development/announcer.js", "storybook": "start-storybook -p 6006 -c .storybook", "storybook:test": "jest --config=./jest.stories.config.js", "storybook:build": "build-storybook -c .storybook -o storybook-build", "storybook:deploy": "storybook-to-ghpages --existing-output-dir storybook-build --remote storybook --branch master", "update-changelog": "auto-changelog update", "generate:migration": "./development/generate-migration.sh", "lavamoat:build": "lavamoat development/build/index.js --policy lavamoat/build-system/policy.json --policyOverride lavamoat/build-system/policy-override.json", "lavamoat:build:auto": "yarn lavamoat:build --writeAutoPolicy", "lavamoat:debug:build": "yarn lavamoat:build --writeAutoPolicyDebug --policydebug lavamoat/build-system/policy-debug.json", "lavamoat:webapp:auto": "node ./development/generate-lavamoat-policies.js --devMode=true", "lavamoat:webapp:auto:ci": "node ./development/generate-lavamoat-policies.js --parallel=false", "lavamoat:auto": "yarn lavamoat:build:auto && yarn lavamoat:webapp:auto", "lavamoat:auto:ci": "yarn lavamoat:build:auto && yarn lavamoat:webapp:auto:ci", "ts-migration:enumerate": "ts-node development/ts-migration-dashboard/scripts/write-list-of-files-to-convert.ts", "ts-migration:dashboard:watch": "ts-node development/ts-migration-dashboard/scripts/build.ts --watch", "ts-migration:dashboard:build": "ts-node development/ts-migration-dashboard/scripts/build.ts", "ts-migration:dashboard:deploy": "gh-pages --dist development/ts-migration-dashboard/build --remote ts-migration-dashboard" }, "resolutions": { "**/regenerator-runtime": "^0.13.7", "**/caniuse-lite": "^1.0.30001312", "**/cross-fetch": "^3.1.5", "**/configstore/dot-prop": "^5.1.1", "**/ethers/elliptic": "^6.5.4", "**/redux/symbol-observable": "^2.0.3", "**/redux-devtools-instrument/symbol-observable": "^2.0.3", "**/rxjs/symbol-observable": "^2.0.3", "analytics-node/axios": "^0.21.2", "ganache-core/lodash": "^4.17.21", "netmask": "^2.0.1", "pubnub/superagent-proxy": "^3.0.0", "json-schema": "^0.4.0", "simple-get": "^4.0.1", "@storybook/**/ast-types": "^0.14.2" }, "dependencies": { "@babel/runtime": "^7.5.5", "@download/blockies": "^1.0.3", "@ensdomains/content-hash": "^2.5.6", "@eth-optimism/contracts": "0.0.0-2021919175625", "@ethereumjs/common": "^2.3.1", "@ethereumjs/tx": "^3.2.1", "@formatjs/intl-relativetimeformat": "^5.2.6", "@fortawesome/fontawesome-free": "^5.13.0", "@keystonehq/bc-ur-registry-eth": "^0.12.1", "@keystonehq/metamask-airgapped-keyring": "^0.6.1", "@material-ui/core": "^4.11.0", "@metamask/contract-metadata": "^1.31.0", "@metamask/controllers": "^32.0.2", "@metamask/design-tokens": "^1.9.0", "@metamask/eth-json-rpc-infura": "^7.0.0", "@metamask/eth-ledger-bridge-keyring": "^0.13.0", "@metamask/eth-token-tracker": "^4.0.0", "@metamask/etherscan-link": "^2.2.0", "@metamask/jazzicon": "^2.0.0", "@metamask/logo": "^3.1.1", "@metamask/metamask-eth-abis": "^3.0.0", "@metamask/obs-store": "^5.0.0", "@metamask/post-message-stream": "^4.0.0", "@metamask/providers": "^10.0.0", "@metamask/rpc-methods": "^0.22.2", "@metamask/slip44": "^2.1.0", "@metamask/smart-transactions-controller": "^2.3.2", "@metamask/snap-controllers": "^0.22.2", "@metamask/snap-utils": "^0.22.2", "@ngraveio/bc-ur": "^1.1.6", "@popperjs/core": "^2.4.0", "@reduxjs/toolkit": "^1.6.2", "@segment/loosely-validate-event": "^2.0.0", "@sentry/browser": "^6.0.0", "@sentry/integrations": "^6.0.0", "@sentry/types": "^6.0.1", "@sentry/utils": "^6.0.1", "@spruceid/siwe-parser": "^1.1.3", "@truffle/codec": "^0.11.18", "@truffle/decoder": "^5.1.0", "@zxing/browser": "^0.0.10", "@zxing/library": "0.8.0", "await-semaphore": "^0.1.1", "base32-encode": "^1.2.0", "base64-js": "^1.5.1", "bignumber.js": "^4.1.0", "bn.js": "^4.11.7", "classnames": "^2.2.6", "copy-to-clipboard": "^3.0.8", "currency-formatter": "^1.4.2", "debounce-stream": "^2.0.0", "deep-freeze-strict": "1.1.1", "end-of-stream": "^1.4.4", "eth-block-tracker": "^6.0.0", "eth-ens-namehash": "^2.0.8", "eth-json-rpc-filters": "^4.2.1", "eth-json-rpc-middleware": "^9.0.1", "eth-keyring-controller": "^7.0.2", "eth-lattice-keyring": "^0.12.3", "eth-method-registry": "^2.0.0", "eth-query": "^2.1.2", "eth-rpc-errors": "^4.0.2", "eth-sig-util": "^3.0.0", "eth-trezor-keyring": "^0.10.0", "ethereum-ens-network-map": "^1.0.2", "ethereumjs-abi": "^0.6.4", "ethereumjs-util": "^7.0.10", "ethereumjs-wallet": "^0.6.4", "ethers": "^5.6.4", "ethjs": "^0.4.0", "ethjs-contract": "^0.2.3", "ethjs-query": "^0.3.4", "extension-port-stream": "^2.0.0", "fast-json-patch": "^2.2.1", "fuse.js": "^3.2.0", "globalthis": "^1.0.1", "human-standard-token-abi": "^2.0.0", "immer": "^9.0.6", "is-retry-allowed": "^2.2.0", "jest-junit": "^14.0.1", "json-rpc-engine": "^6.1.0", "json-rpc-middleware-stream": "^2.1.1", "jsonschema": "^1.2.4", "labeled-stream-splicer": "^2.0.2", "localforage": "^1.9.0", "lodash": "^4.17.21", "loglevel": "^1.4.1", "luxon": "^1.26.0", "nanoid": "^2.1.6", "nonce-tracker": "^1.0.0", "obj-multiplex": "^1.0.0", "pify": "^5.0.0", "promise-to-callback": "^1.0.0", "prop-types": "^15.6.1", "pubnub": "4.27.3", "pump": "^3.0.0", "punycode": "^2.1.1", "qrcode-generator": "1.4.1", "qrcode.react": "^1.0.1", "react": "^16.12.0", "react-dnd": "^3.0.2", "react-dnd-html5-backend": "^7.4.4", "react-dom": "^16.12.0", "react-idle-timer": "^4.2.5", "react-inspector": "^2.3.0", "react-popper": "^2.2.3", "react-redux": "^7.2.0", "react-responsive-carousel": "^3.2.21", "react-router-dom": "^5.1.2", "react-simple-file-input": "^2.0.0", "react-tippy": "^1.2.2", "react-toggle-button": "^2.2.0", "react-transition-group": "^1.2.1", "readable-stream": "^2.3.3", "redux": "^4.0.5", "redux-thunk": "^2.3.0", "remove-trailing-slash": "^0.1.1", "reselect": "^3.0.1", "safe-event-emitter": "^1.0.1", "ses": "^0.12.4", "single-call-balance-checker-abi": "^1.0.0", "swappable-obj-proxy": "^1.1.0", "textarea-caret": "^3.0.1", "unicode-confusables": "^0.1.1", "uuid": "^8.3.2", "valid-url": "^1.0.9", "web3-stream-provider": "^4.0.0", "zxcvbn": "^4.4.2" }, "devDependencies": { "@babel/code-frame": "^7.12.13", "@babel/core": "^7.12.1", "@babel/eslint-parser": "^7.13.14", "@babel/eslint-plugin": "^7.12.1", "@babel/preset-env": "^7.5.5", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.16.7", "@babel/register": "^7.5.5", "@ethersproject/bignumber": "^5.7.0", "@lavamoat/allow-scripts": "^2.0.3", "@lavamoat/lavapack": "^3.1.0", "@metamask/auto-changelog": "^2.1.0", "@metamask/eslint-config": "^9.0.0", "@metamask/eslint-config-jest": "^9.0.0", "@metamask/eslint-config-mocha": "^9.0.0", "@metamask/eslint-config-nodejs": "^9.0.0", "@metamask/eslint-config-typescript": "^9.0.1", "@metamask/forwarder": "^1.1.0", "@metamask/phishing-warning": "^1.2.1", "@metamask/test-dapp": "^5.2.1", "@sentry/cli": "^1.58.0", "@storybook/addon-a11y": "^6.5.10", "@storybook/addon-actions": "^6.5.10", "@storybook/addon-essentials": "^6.5.10", "@storybook/addon-knobs": "^6.4.0", "@storybook/addons": "^6.5.10", "@storybook/api": "^6.5.10", "@storybook/client-api": "^6.5.10", "@storybook/components": "^6.5.10", "@storybook/core": "^6.5.10", "@storybook/core-events": "^6.5.10", "@storybook/react": "^6.5.10", "@storybook/storybook-deployer": "^2.8.12", "@storybook/theming": "^6.5.10", "@testing-library/jest-dom": "^5.11.10", "@testing-library/react": "^10.4.8", "@testing-library/react-hooks": "^3.2.1", "@testing-library/user-event": "^14.4.3", "@tsconfig/node16": "^1.0.3", "@types/babelify": "^7.3.7", "@types/browserify": "^12.0.37", "@types/end-of-stream": "^1.4.1", "@types/fs-extra": "^9.0.13", "@types/gulp": "^4.0.9", "@types/gulp-autoprefixer": "^0.0.33", "@types/gulp-dart-sass": "^1.0.1", "@types/gulp-sourcemaps": "^0.0.35", "@types/madge": "^5.0.0", "@types/node": "^17.0.21", "@types/pify": "^5.0.1", "@types/pump": "^1.1.1", "@types/react": "^16.9.53", "@types/react-dom": "^17.0.11", "@types/watchify": "^3.11.1", "@types/yargs": "^17.0.8", "@typescript-eslint/eslint-plugin": "^5.30.7", "@typescript-eslint/parser": "^5.30.7", "addons-linter": "^5.2.0", "babelify": "^10.0.0", "bify-module-groups": "^2.0.0", "brfs": "^2.0.2", "browser-util-inspect": "^0.2.0", "browserify": "^16.5.1", "chalk": "^3.0.0", "chokidar": "^3.5.3", "chromedriver": "^107.0.0", "concurrently": "^5.2.0", "copy-webpack-plugin": "^6.0.3", "cross-spawn": "^7.0.3", "css-loader": "^2.1.1", "css-to-xpath": "^0.1.0", "csstype": "^3.0.11", "del": "^3.0.0", "depcheck": "^1.4.3", "dependency-tree": "^8.1.2", "duplexify": "^4.1.1", "enzyme": "^3.10.0", "enzyme-adapter-react-16": "^1.15.1", "eslint": "^8.20.0", "eslint-config-prettier": "^8.5.0", "eslint-import-resolver-node": "^0.3.4", "eslint-import-resolver-typescript": "^2.5.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-jest": "^26.6.0", "eslint-plugin-jsdoc": "^39.3.3", "eslint-plugin-mocha": "^8.1.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.23.1", "eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-storybook": "^0.6.4", "fancy-log": "^1.3.3", "fast-glob": "^3.2.2", "fs-extra": "^8.1.0", "ganache": "^v7.0.4", "geckodriver": "^1.21.0", "gh-pages": "^3.2.3", "globby": "^11.0.4", "gulp": "^4.0.2", "gulp-autoprefixer": "^5.0.0", "gulp-dart-sass": "^1.0.2", "gulp-livereload": "4.0.0", "gulp-rename": "^2.0.0", "gulp-rtlcss": "^1.4.0", "gulp-sort": "^2.0.0", "gulp-sourcemaps": "^3.0.0", "gulp-stylelint": "^13.0.0", "gulp-watch": "^5.0.1", "gulp-zip": "^5.1.0", "history": "^5.0.0", "improved-yarn-audit": "^3.0.0", "ini": "^3.0.0", "jest": "^29.1.2", "jest-canvas-mock": "^2.3.1", "jest-environment-jsdom": "^29.1.2", "jest-it-up": "^2.0.2", "jsdom": "^11.2.0", "koa": "^2.7.0", "lavamoat": "^6.2.0", "lavamoat-browserify": "^15.2.0", "lavamoat-viz": "^6.0.9", "lockfile-lint": "^4.0.0", "loose-envify": "^1.4.0", "madge": "^5.0.1", "mocha": "^7.2.0", "mockttp": "^2.6.0", "nock": "^13.2.9", "node-fetch": "^2.6.1", "nyc": "^15.0.0", "patch-package": "^6.4.7", "polyfill-crypto.getrandomvalues": "^1.0.0", "prettier": "^2.7.1", "prettier-plugin-sort-json": "^0.0.1", "proxyquire": "^2.1.3", "pumpify": "^2.0.1", "randomcolor": "^0.5.4", "react-devtools": "^4.11.0", "read-installed": "^4.0.3", "redux-mock-store": "^1.5.4", "remote-redux-devtools": "^0.5.16", "resolve-url-loader": "^3.1.2", "sass": "^1.32.4", "sass-loader": "^10.1.1", "selenium-webdriver": "^4.3.1", "semver": "^7.3.5", "serve-handler": "^6.1.2", "sinon": "^9.0.0", "source-map": "^0.7.2", "source-map-explorer": "^2.4.2", "squirrelly": "^8.0.8", "storybook-dark-mode": "^1.1.0", "string.prototype.matchall": "^4.0.2", "style-loader": "^0.21.0", "stylelint": "^13.6.1", "terser": "^5.7.0", "through2": "^4.0.2", "ts-node": "^10.5.0", "ttest": "^2.1.1", "typescript": "~4.4.0", "vinyl": "^2.2.1", "vinyl-buffer": "^1.0.1", "vinyl-source-stream": "^2.0.0", "vinyl-sourcemaps-apply": "^0.2.1", "watchify": "^4.0.0", "webextension-polyfill": "^0.8.0", "webpack": "^4.41.6", "yargs": "^17.0.1", "yarn-deduplicate": "^3.1.0" }, "engines": { "node": "^16.0.0", "yarn": "^1.16.0" }, "lavamoat": { "allowScripts": { "@sentry/cli": true, "chromedriver": true, "geckodriver": true, "react-devtools>electron": true, "@eth-optimism/contracts>@ethersproject/hardware-wallets>@ledgerhq/hw-transport-node-hid>@ledgerhq/hw-transport-node-hid-noevents>node-hid": false, "@eth-optimism/contracts>@ethersproject/hardware-wallets>@ledgerhq/hw-transport-node-hid>node-hid": false, "@eth-optimism/contracts>@ethersproject/hardware-wallets>@ledgerhq/hw-transport-node-hid>usb": false, "@metamask/controllers>web3-provider-engine>ethereumjs-util>keccak": false, "@metamask/controllers>web3-provider-engine>ethereumjs-util>secp256k1": false, "@metamask/controllers>web3-provider-engine>ethereumjs-vm>merkle-patricia-tree>ethereumjs-util>keccak": false, "@metamask/controllers>web3-provider-engine>ethereumjs-vm>merkle-patricia-tree>ethereumjs-util>secp256k1": false, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>keccak": false, "@metamask/eth-ledger-bridge-keyring>hdkey>secp256k1": false, "@storybook/api>core-js": false, "@storybook/core>@storybook/core-client>@storybook/ui>core-js-pure": false, "eth-json-rpc-filters>eth-json-rpc-middleware>ethereumjs-util>keccak": false, "eth-json-rpc-filters>eth-json-rpc-middleware>ethereumjs-util>secp256k1": false, "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>keccak": false, "eth-json-rpc-middleware>eth-sig-util>ethereumjs-util>secp256k1": false, "eth-lattice-keyring>gridplus-sdk": false, "eth-sig-util>ethereumjs-util>keccak": false, "eth-sig-util>ethereumjs-util>secp256k1": false, "eth-trezor-keyring>hdkey>secp256k1": false, "eth-trezor-keyring>trezor-connect>@trezor/transport>protobufjs": false, "eth-trezor-keyring>trezor-connect>@trezor/utxo-lib>blake-hash": false, "eth-trezor-keyring>trezor-connect>@trezor/utxo-lib>tiny-secp256k1": false, "ethereumjs-util>ethereum-cryptography>keccak": false, "ethjs-query>babel-runtime>core-js": false, "ganache>@trufflesuite/bigint-buffer": false, "ganache>bufferutil": false, "ganache>keccak": false, "ganache>leveldown": false, "ganache>secp256k1": false, "ganache>utf-8-validate": false, "ethereumjs-util>ethereum-cryptography>secp256k1": false, "gulp-watch>chokidar>fsevents": false, "gulp>glob-watcher>chokidar>fsevents": false, "webpack>watchpack>watchpack-chokidar2>chokidar>fsevents": false, "@keystonehq/bc-ur-registry-eth>hdkey>secp256k1": false, "@metamask/rpc-methods>@metamask/key-tree>secp256k1": false, "eth-lattice-keyring>gridplus-sdk>secp256k1": false, "eth-lattice-keyring>secp256k1": false, "@storybook/react>@pmmmwh/react-refresh-webpack-plugin>core-js-pure": false, "@testing-library/jest-dom>aria-query>@babel/runtime-corejs3>core-js-pure": false, "web3": false, "web3>web3-bzz": false, "web3>web3-core>web3-core-requestmanager>web3-providers-ws>websocket>bufferutil": false, "web3>web3-core>web3-core-requestmanager>web3-providers-ws>websocket>es5-ext": false, "web3>web3-core>web3-core-requestmanager>web3-providers-ws>websocket>utf-8-validate": false, "web3>web3-shh": false } } }